c++实现贪吃蛇详解(附代码)

前言

经过一个多月的学习,又加深了对c++的理解,所以接下来,就和大家分享一下,一个月学习c++的成果,控制台贪吃蛇,大佬勿喷。

一、运行界面

  1. 进入界面
    c++实现贪吃蛇详解(附代码)
  2. 单人游戏界面
    c++实现贪吃蛇详解(附代码)
  3. 难度选择界面

c++实现贪吃蛇详解(附代码)
4. 自定义地图界面
c++实现贪吃蛇详解(附代码)
5. 双人对战界面
c++实现贪吃蛇详解(附代码)
6. 地图选择界面
c++实现贪吃蛇详解(附代码)
7. 存档读取界面
c++实现贪吃蛇详解(附代码)

功能很多,就不一一列举了,大致就是存档,存地图,读地图这些功能。

二、类的大致抽象

注:由于每个人对游戏的理解不一样,所以这里我仅仅提供我个人的想法,如果有更好的想法,欢迎告知作者,也请各位大佬勿喷。

  1. 游戏基础头文件

    在此包含关于游戏的所有基础功能操作,比如设置窗口大小,设置背景音效,以及对控制台的一些操作

    • 功能函数:
      • ChangeEnglish():切换输入法为英文
      • PlayMusic():播放背景音乐
      • ConsoleInit():控制台大小初始化
      • ShowCursor():隐藏光标
      • WriteChar():在屏幕指定行row,指定列col 处,用颜色color,打印字符串szInfo
  2. CSnake类

    • 大致功能:保存蛇的基本信息和蛇的一些操作

    • 数据:

      • 蛇的坐标数组
      • 蛇的运动方向
      • 蛇的长度
      • 蛇的颜色
      • 蛇的存活状态
      • 蛇的分数
      • 蛇的移动速度
    • 操作:

      • 设置上述所有数据的接口
      • 蛇的移动
  3. CFood类

    • 大致功能:能够保存食物信息,在地图上随机创建食物
    • 数据:
      • 食物状态
    • 操作:
      • 随机生成食物
  4. CArea类

    • 大致功能:能够设置游戏难度,管理游戏状态
    • 数据:
      • 蛇类对象
      • 一个二维数组的游戏地图
      • 一个食物对象
      • 游戏模式选择标志
      • 当前选择的地图编号
    • 操作:
      • 选择游戏模式
      • 画出地图
      • 获取用户输入
      • 开始游戏
      • 暂停游戏
      • 游戏过程处理
      • 在侧边栏显示游戏数据
      • 难度选择,仅限单人
      • 创建地图,设置后可保存
      • 加载地图至缓冲区
      • 读取存档,仅限单人

三、关于一些问题的思考

  1. 如何实现蛇的移动?

    • 在一个循环里,根据蛇的方向,调用move,让蛇自己一定时间画自己即可
  2. 如何实现选项的高亮选择?

    • 根据用户的按键输入,更改当前的游戏状态标识,根据该标识更改选项界面的颜色,从而达到选择的效果
  3. 如何实现双蛇的伪多线程移动?

    • 在蛇的移动循环里,使用一个计数器和Sleep函数,计数器每加到一定值的时候,响应一条蛇的移动,加到另一个值的时候,响应另一条蛇的移动。
  4. 如何实现地图数据的存取,游戏状态的存取?

    • 将地图和蛇与食物的数据分别保存在不同的文件里,使用的时候读取即可。

四、最后一些想说的

​ 第一次发帖,有一点小激动。另外,代码里面有一些小bug,还有一些功能没有实现,各位大佬轻点喷,也欢迎各位大佬指正。

五、代码

  1. 编译环境:vs2017 + win10
  2. 编译即可运行
  • ****下载:https://download.****.net/download/peng1874/11987227
  • 百度网盘下载:链接:https://pan.baidu.com/s/17eL3wbKWljWZgi6WH4S50Q
    提取码:hnqd
    复制这段内容后打开百度网盘手机App,操作更方便哦