c++实现贪吃蛇详解(附代码)
前言
经过一个多月的学习,又加深了对c++的理解,所以接下来,就和大家分享一下,一个月学习c++的成果,控制台贪吃蛇,大佬勿喷。
一、运行界面
- 进入界面
- 单人游戏界面
- 难度选择界面
4. 自定义地图界面
5. 双人对战界面
6. 地图选择界面
7. 存档读取界面
功能很多,就不一一列举了,大致就是存档,存地图,读地图这些功能。
二、类的大致抽象
注:由于每个人对游戏的理解不一样,所以这里我仅仅提供我个人的想法,如果有更好的想法,欢迎告知作者,也请各位大佬勿喷。
-
游戏基础头文件
在此包含关于游戏的所有基础功能操作,比如设置窗口大小,设置背景音效,以及对控制台的一些操作
- 功能函数:
- ChangeEnglish():切换输入法为英文
- PlayMusic():播放背景音乐
- ConsoleInit():控制台大小初始化
- ShowCursor():隐藏光标
- WriteChar():在屏幕指定行row,指定列col 处,用颜色color,打印字符串szInfo
- 功能函数:
-
CSnake类
-
大致功能:保存蛇的基本信息和蛇的一些操作
-
数据:
- 蛇的坐标数组
- 蛇的运动方向
- 蛇的长度
- 蛇的颜色
- 蛇的存活状态
- 蛇的分数
- 蛇的移动速度
-
操作:
- 设置上述所有数据的接口
- 蛇的移动
-
-
CFood类
- 大致功能:能够保存食物信息,在地图上随机创建食物
- 数据:
- 食物状态
- 操作:
- 随机生成食物
-
CArea类
- 大致功能:能够设置游戏难度,管理游戏状态
- 数据:
- 蛇类对象
- 一个二维数组的游戏地图
- 一个食物对象
- 游戏模式选择标志
- 当前选择的地图编号
- 操作:
- 选择游戏模式
- 画出地图
- 获取用户输入
- 开始游戏
- 暂停游戏
- 游戏过程处理
- 在侧边栏显示游戏数据
- 难度选择,仅限单人
- 创建地图,设置后可保存
- 加载地图至缓冲区
- 读取存档,仅限单人
三、关于一些问题的思考
-
如何实现蛇的移动?
- 在一个循环里,根据蛇的方向,调用move,让蛇自己一定时间画自己即可
-
如何实现选项的高亮选择?
- 根据用户的按键输入,更改当前的游戏状态标识,根据该标识更改选项界面的颜色,从而达到选择的效果
-
如何实现双蛇的伪多线程移动?
- 在蛇的移动循环里,使用一个计数器和Sleep函数,计数器每加到一定值的时候,响应一条蛇的移动,加到另一个值的时候,响应另一条蛇的移动。
-
如何实现地图数据的存取,游戏状态的存取?
- 将地图和蛇与食物的数据分别保存在不同的文件里,使用的时候读取即可。
四、最后一些想说的
第一次发帖,有一点小激动。另外,代码里面有一些小bug,还有一些功能没有实现,各位大佬轻点喷,也欢迎各位大佬指正。
五、代码
- 编译环境:vs2017 + win10
- 编译即可运行
- ****下载:https://download.****.net/download/peng1874/11987227
- 百度网盘下载:链接:https://pan.baidu.com/s/17eL3wbKWljWZgi6WH4S50Q
提取码:hnqd
复制这段内容后打开百度网盘手机App,操作更方便哦