文章目录

  • 前言
  • 一、运行界面
  • 二、类的大致抽象
  • 三、关于一些问题的思考
  • 四、最后一些想说的
  • 五、代码

前言

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

一、运行界面

  1. 进入界面
  2. 单人游戏界面
  3. 难度选择界面


4. 自定义地图界面

5. 双人对战界面

6. 地图选择界面

7. 存档读取界面

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

二、类的大致抽象

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

  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. 编译即可运行
  • csdn下载:https://download.csdn.net/download/peng1874/11987227
  • 百度网盘下载:链接:https://pan.baidu.com/s/17eL3wbKWljWZgi6WH4S50Q
    提取码:hnqd
    复制这段内容后打开百度网盘手机App,操作更方便哦

c++实现贪吃蛇详解(附代码)相关推荐

  1. C语言贪吃蛇详解4,c语言贪吃蛇详解4.食物的投放与蛇的变长

    c语言贪吃蛇详解4.食物的投放与蛇的变长 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识 ...

  2. C语言处理贪吃蛇游戏蛇的长度,c语言贪吃蛇详解4.食物的投放与蛇的变长

    c语言贪吃蛇详解4.食物的投放与蛇的变长 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识 ...

  3. c语言贪吃蛇详解5.GameOver功能与显示成绩

    c语言贪吃蛇详解5.GameOver功能与显示成绩 以前我们已经做出来了一个能吃东西变长的蛇.不过它好像不会死... 现在就来实现一下game over的功能吧. 写个函数判断蛇是否撞到自己或者撞到墙 ...

  4. Python入门: 贪吃蛇详解

    贪吃蛇 用python3实现小时候非常喜欢的: Gluttonous Snake

  5. 动态规划---01背包问题--Dp(详解附代码)

    一.动态规划 代表一类问题(最优子结构或子问题最优性)的一般解法,是设计方法或者策略,不是具体算法 本质:递推,核心是找到状态转移的方式,写出dp方程. 解决问题:交叉,重叠子问题(最优子问题) 形式 ...

  6. 【排序】堆排序详解 附代码

    按照国际惯例,开篇前先简单介绍(吹一波)堆排序(Heapsort).Heapsort是一种优秀的排序算法(个人感觉基本排序算法中仅次于快速排序),时间复杂度为O(nlgn),同时,Heapsort具有 ...

  7. 各种进制转换(二,八,十,十六进制间转换)详解附代码

    进制转换 原理 进制转换是人们利用符号来计数的方法.进制转换由一组数码符号和两个基本因素"基数"与"位权"构成. 基数是指,进位计数制中所采用的数码(数制中用来 ...

  8. 前序遍历、中序遍历、后序遍历层序遍历详解附代码(数据结构C语言)

    目录 (1)前序遍历 (DLR) 递归算法 (2)中序遍历 (LDR) 递归算法 (3)后序遍历 (LRD) 递归算法 (4)层序遍历 队列实现方法 层序遍历的定义: 实现方法: 代码实现 结果截图 ...

  9. Numpy学习笔记(二):argmax参数中axis=0,axis=1,axis=-1详解附代码

    文章目录 1.argmax和max函数区别 2.axis=0/axis=1/axis=-1的区别 3.具体代码分析 ---3.1一维数组 ---3.2二维数组 ---3.3三维数组 1.argmax和 ...

最新文章

  1. ADAS处理器集成功能安全单片机MCU
  2. tensorflow与keras关系
  3. JMeter学习(十)内存溢出解决方法
  4. MySQL给一个字段递增赋值
  5. 影响软件开发的两个关键性的问题
  6. 计算机课四年级说课稿,小学信息技术说课稿
  7. llinux环境变量查看和修改
  8. C#写的WebServices可运行于树莓派
  9. Python学习笔记之列表(一)
  10. 教你如何做出想要的PHPDocker镜像
  11. 【报告分享】抖音品牌主页运营官方指导手册.pdf(附下载链接)
  12. 挨踢部落坐诊第六期:机器学习如何判断突发情况?
  13. Android开发教程:shape和selector的结合使用
  14. 推荐 五个单变量时间序列数据集
  15. 使用Thumbnails实现图片指定大小压缩
  16. citrixreceiver云桌面系统_Citrix Receiver(虚拟桌面软件)V5.0 正式版
  17. 共享文件夹——Window与linux
  18. c语言异形图片,“异形”二字描述了他的一生
  19. 无线测温系统在高低压开关柜内的运行---安科瑞 顾城
  20. 平生不会相思,才会相思,便害相思

热门文章

  1. oracle字体为红色,ORACLE 显示 中文字体
  2. 多数据源@DS的使用
  3. BGP属性MED基本作用
  4. Word控件Spire.Doc 【页面背景】教程(7) ;在 C# 中为 word 文档设置图像背景
  5. html表格数据按自定义公式自动计算,Word表格中进行数据自动计算教程
  6. 【考研】英语作文 Part A 范文积累
  7. 【MySQL从小白到高手】第五篇:最强迪卡尔积详解
  8. wget 正在连接 127.0.0.1:36627... 失败:拒绝连接
  9. 从资本和负债角度浅析末位淘汰制的适用条件
  10. 苹果音量测试软件,抖音量身高的软件是什么?苹果测距仪怎么使用