吃豆人(Pac-man),想必熟悉电子游戏发展史的玩家都不会陌生。
它是电子游戏历史上的经典街机游戏,由Namco公司的岩谷彻设计并由MidwayGames在年发行。
Pac-Man被认为是80年代最经典的街机游戏之一,游戏的主角小精灵的形象甚至被作为一种大众文化符号,或是此产业的代表形象。
但吃豆人的玩法现在看来,也许已经有些过时。
玩家要控制吃豆人吃掉迷宫里面的所有豆子,同时尽可能躲避小鬼怪。一旦吃豆人吃掉能量药丸,它就可以在一定时间内反过来欺负小鬼怪了。
不过,在漫漫游戏长河中,吃豆人,永远都会是最闪耀的那一颗。它是电子游戏的文化符号,同时首创了迷宫追逐的概念。今天,我挑选了一个吃豆人开发教程分享给大家。复刻吃豆人,致敬经典!
实现效果如下:
(游戏源码可以在阅读原文中下载)
以下是教程节选:一、实验介绍1.1实验内容本节实验主要通过C++和openGL库来实现了一个吃豆人的小游戏。主要的课程内容涉及到C++相关的序列容器vector、deque和迭代器,以及openGL相关的窗口初始化与绘图功能。1.2知识点C++编程基础
C++模板库使用
openGl库使用
1.3实验环境xfce终端
ubuntu16.04
openGl库
1.4适合人群有一定C++编程基础,了解STL模板库,对游戏设计、逻辑分析和openGL库感兴趣的同学。二、环境准备2.1安装openGL库执行以下命令安装所需的各种依赖sudoapt-getupdatesudoapt-getinstallbuild-essentialsudoapt-getinstalllibgl1-mesa-devsudoapt-getinstalllibglu1-mesa-devsudoapt-getinstallfreeglut3-dev2.2编译程序需要进入Pacman/src/目录
make2.3运行程序需要进入Pacman/bin/目录
./Pacman2.4运行效果三、项目分析3.1模块拆分在开始编写程序之前我们需要利用C++的思想把实际问题转换成一个个对象。说到游戏应该就能想到角色、地图和怪物以及操作命令等。我们把这些元素细化就可以得到游戏设计模块:
角色设计
地图设计
怪物设计
食物设计
操作设计
界面设计
3.2开发说明C++:编程语言
Linuxubuntu16.04:开发环境
openGL:第三方库
备注:openGL是一种图形界面处理库,提供了许多API给其他语言调用。我们的地图、角色和界面等等都需要调用它。四、详细设计4.1提前准备在这里首先需要为我们的项目创建一个文件夹,进入/home/shiyanlou/Code/目录下,将我们这次的项目命名为Pacman。进入这个文件夹创建三个子文件夹inlcude(存放头文件)、src(存放源代码)和bin(存放可执行文件)。并创建相应的代码文件,具体内容与结构如下:▲include目录下control.h
createpacman.h
food.h
gameover.h
gameresult.h
gamestart.h
init.h
laberynth.h
main.h
monster.h
▲src目录下(相对应)control.cpp
createpacman.cpp
food.cpp
gameover.cpp
gameresult.cpp
gamestart.cpp
init.cpp
labernth.cpp
Pacman.cpp
monster.cpp
4.2预定义与全局变量首先在include创建main.h,用来存放头文件和一些全局变量,全局变量的定义是方便所有的模块访问并反映游戏的状态。全局变量定义后,在主函数中进行赋值,所有模块就都能访问了。//main.h#ifndef_MAIN_H_#define_MAIN_H_#includevector#includeGL/glut.h#includeiostream#includecstring#define_USE_MATH_DEFINES#includemath.h#includevector#includedeque#includestdlib.husingnamespacestd;externboolreplay;//检查是否启动游戏externboolover;//检查游戏是否结束externfloatsquareSize;//一个单元大小externfloatxIncrement;//x坐标externfloatyIncrement;//y坐标externintrotation;//方向externfloat*monster1;//第一个怪物的坐标和方向externfloat*monster2;//第二个怪物的坐标和方向externfloat*monster3;//第三个怪物的坐标和方向externfloat*monster4;//第四个怪物的坐标和方向externvectorintborder;//墙坐标//障碍物坐标(为了清晰分为三部分)externvectorintobstaclesTop;externvectorintobstaclesMiddle;externvectorintobstaclesBottom;externdequefloatfood;externvectorvectorboolbitmap;//2d图像,可移动区域externbool*keyStates;//按键状态externintpoints;//得分#endif......接下来,还有“初始化游戏地图”“怪物设计”“食物设计”等内容,点击阅读原文,即可免费学习全部内容,下载游戏完整源码。??????预览时标签不可点收录于合集#个上一篇下一篇