c++实现贪吃蛇详解(附代码)
文章目录
- 前言
- 一、运行界面
- 二、类的大致抽象
- 三、关于一些问题的思考
- 四、最后一些想说的
- 五、代码
前言
经过一个多月的学习,又加深了对c++的理解,所以接下来,就和大家分享一下,一个月学习c++的成果,控制台贪吃蛇,大佬勿喷。
一、运行界面
- 进入界面
- 单人游戏界面
- 难度选择界面
4. 自定义地图界面
5. 双人对战界面
6. 地图选择界面
7. 存档读取界面
功能很多,就不一一列举了,大致就是存档,存地图,读地图这些功能。
二、类的大致抽象
注:由于每个人对游戏的理解不一样,所以这里我仅仅提供我个人的想法,如果有更好的想法,欢迎告知作者,也请各位大佬勿喷。
游戏基础头文件
在此包含关于游戏的所有基础功能操作,比如设置窗口大小,设置背景音效,以及对控制台的一些操作
- 功能函数:
- ChangeEnglish():切换输入法为英文
- PlayMusic():播放背景音乐
- ConsoleInit():控制台大小初始化
- ShowCursor():隐藏光标
- WriteChar():在屏幕指定行row,指定列col 处,用颜色color,打印字符串szInfo
- 功能函数:
CSnake类
大致功能:保存蛇的基本信息和蛇的一些操作
数据:
- 蛇的坐标数组
- 蛇的运动方向
- 蛇的长度
- 蛇的颜色
- 蛇的存活状态
- 蛇的分数
- 蛇的移动速度
操作:
- 设置上述所有数据的接口
- 蛇的移动
CFood类
- 大致功能:能够保存食物信息,在地图上随机创建食物
- 数据:
- 食物状态
- 操作:
- 随机生成食物
CArea类
- 大致功能:能够设置游戏难度,管理游戏状态
- 数据:
- 蛇类对象
- 一个二维数组的游戏地图
- 一个食物对象
- 游戏模式选择标志
- 当前选择的地图编号
- 操作:
- 选择游戏模式
- 画出地图
- 获取用户输入
- 开始游戏
- 暂停游戏
- 游戏过程处理
- 在侧边栏显示游戏数据
- 难度选择,仅限单人
- 创建地图,设置后可保存
- 加载地图至缓冲区
- 读取存档,仅限单人
三、关于一些问题的思考
如何实现蛇的移动?
- 在一个循环里,根据蛇的方向,调用move,让蛇自己一定时间画自己即可
如何实现选项的高亮选择?
- 根据用户的按键输入,更改当前的游戏状态标识,根据该标识更改选项界面的颜色,从而达到选择的效果
如何实现双蛇的伪多线程移动?
- 在蛇的移动循环里,使用一个计数器和Sleep函数,计数器每加到一定值的时候,响应一条蛇的移动,加到另一个值的时候,响应另一条蛇的移动。
如何实现地图数据的存取,游戏状态的存取?
- 将地图和蛇与食物的数据分别保存在不同的文件里,使用的时候读取即可。
四、最后一些想说的
第一次发帖,有一点小激动。另外,代码里面有一些小bug,还有一些功能没有实现,各位大佬轻点喷,也欢迎各位大佬指正。
五、代码
- 编译环境:vs2017 + win10
- 编译即可运行
- csdn下载:https://download.csdn.net/download/peng1874/11987227
- 百度网盘下载:链接:https://pan.baidu.com/s/17eL3wbKWljWZgi6WH4S50Q
提取码:hnqd
复制这段内容后打开百度网盘手机App,操作更方便哦
c++实现贪吃蛇详解(附代码)相关推荐
- C语言贪吃蛇详解4,c语言贪吃蛇详解4.食物的投放与蛇的变长
c语言贪吃蛇详解4.食物的投放与蛇的变长 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识 ...
- C语言处理贪吃蛇游戏蛇的长度,c语言贪吃蛇详解4.食物的投放与蛇的变长
c语言贪吃蛇详解4.食物的投放与蛇的变长 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识 ...
- c语言贪吃蛇详解5.GameOver功能与显示成绩
c语言贪吃蛇详解5.GameOver功能与显示成绩 以前我们已经做出来了一个能吃东西变长的蛇.不过它好像不会死... 现在就来实现一下game over的功能吧. 写个函数判断蛇是否撞到自己或者撞到墙 ...
- Python入门: 贪吃蛇详解
贪吃蛇 用python3实现小时候非常喜欢的: Gluttonous Snake
- 动态规划---01背包问题--Dp(详解附代码)
一.动态规划 代表一类问题(最优子结构或子问题最优性)的一般解法,是设计方法或者策略,不是具体算法 本质:递推,核心是找到状态转移的方式,写出dp方程. 解决问题:交叉,重叠子问题(最优子问题) 形式 ...
- 【排序】堆排序详解 附代码
按照国际惯例,开篇前先简单介绍(吹一波)堆排序(Heapsort).Heapsort是一种优秀的排序算法(个人感觉基本排序算法中仅次于快速排序),时间复杂度为O(nlgn),同时,Heapsort具有 ...
- 各种进制转换(二,八,十,十六进制间转换)详解附代码
进制转换 原理 进制转换是人们利用符号来计数的方法.进制转换由一组数码符号和两个基本因素"基数"与"位权"构成. 基数是指,进位计数制中所采用的数码(数制中用来 ...
- 前序遍历、中序遍历、后序遍历层序遍历详解附代码(数据结构C语言)
目录 (1)前序遍历 (DLR) 递归算法 (2)中序遍历 (LDR) 递归算法 (3)后序遍历 (LRD) 递归算法 (4)层序遍历 队列实现方法 层序遍历的定义: 实现方法: 代码实现 结果截图 ...
- 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和 ...
最新文章
- ADAS处理器集成功能安全单片机MCU
- tensorflow与keras关系
- JMeter学习(十)内存溢出解决方法
- MySQL给一个字段递增赋值
- 影响软件开发的两个关键性的问题
- 计算机课四年级说课稿,小学信息技术说课稿
- llinux环境变量查看和修改
- C#写的WebServices可运行于树莓派
- Python学习笔记之列表(一)
- 教你如何做出想要的PHPDocker镜像
- 【报告分享】抖音品牌主页运营官方指导手册.pdf(附下载链接)
- 挨踢部落坐诊第六期:机器学习如何判断突发情况?
- Android开发教程:shape和selector的结合使用
- 推荐 五个单变量时间序列数据集
- 使用Thumbnails实现图片指定大小压缩
- citrixreceiver云桌面系统_Citrix Receiver(虚拟桌面软件)V5.0 正式版
- 共享文件夹——Window与linux
- c语言异形图片,“异形”二字描述了他的一生
- 无线测温系统在高低压开关柜内的运行---安科瑞 顾城
- 平生不会相思,才会相思,便害相思
热门文章
- oracle字体为红色,ORACLE 显示 中文字体
- 多数据源@DS的使用
- BGP属性MED基本作用
- Word控件Spire.Doc 【页面背景】教程(7) ;在 C# 中为 word 文档设置图像背景
- html表格数据按自定义公式自动计算,Word表格中进行数据自动计算教程
- 【考研】英语作文 Part A 范文积累
- 【MySQL从小白到高手】第五篇:最强迪卡尔积详解
- wget 正在连接 127.0.0.1:36627... 失败:拒绝连接
- 从资本和负债角度浅析末位淘汰制的适用条件
- 苹果音量测试软件,抖音量身高的软件是什么?苹果测距仪怎么使用