C语言与C++基础编写贪吃蛇项目1
第一阶段:
简单的移动的贪吃蛇编写。
小白编写,勿喷。
一.总体项目功能:
1.添加背景音乐或者动作音效
2.有欢迎界面,游戏选项等界面
3.地图范围内有障碍物,可随机生成食物,随机障碍物
4.蛇可以在地图范围内随意移动 (添加了蛇的抑制反方向功能)
5.游戏可暂停,可中途退出
6.具有简单的计分功能
7.撞上障碍物后会结束本局游戏 (自己撞上自己也会结束游戏)
8. 判断碰撞,区分边界,障碍物以及食物
9.有专门的自定义地图编辑功能,可以让玩家自定义地图
10.游戏状态可存档,读档 (单人游戏,双人游戏)
11.多种食物:◆(紫色)为普通食物:分数上涨,蛇身加一。(并且吃到一定数量,也会增长速度)
●(黄色) 为有毒食物:分数虽然会上涨,但蛇身减一。
★(红色)为稀有食物,分数上涨更多,蛇身增长,速度增加。
12. 双人游戏:当一方撞上另一方时或者,一方撞墙时,或者一方撞上自己的蛇身时,判定对方获胜。
13. 设置冰面,草坪:
冰面:当通过冰面时,蛇会突然加速一段距离。
草坪:当蛇通过草坪时,在草坪的部分会转化为草坪,达到视觉隐身的效果。
二.项目重要函数:
2.1 在控制台上定点移动光标功能(隐藏光标):

该函数可以初步用于在编写贪吃蛇界面时,将界面选项居中使其达到美观的效果。
2.2 在控制台上定点绘制不同颜色符号函数(隐藏光标):

该函数用于在控制台上对指定坐标进行指定绘制指定颜色的特殊符号,后续用于绘制食物,地图,以及蛇的形体。
其中:GetStdHandle该函数用于取得指定的标准,设备的句柄(标准输入,标准输出或标准错误)。
而STD_OUTPUT_HANDLE则为标准输出句柄。
SetConsoleCursorPosition为设置控制台光标位置函数,由于控制台坐标,x轴与y轴的坐标长度为1:2,因此在设置时,应该主动将x*2,当然不这样的话,后续画出来的贪吃蛇会在y轴上行走的时候的形体比在x轴上行走的形体长一倍(你要这样的话,也可以当做是贪吃蛇的特色。。。)
2.3 无回显接受用户键盘输入(用于后续设置贪吃蛇的操作函数)

包含头文件<conio.h>
在这里:_getch()为无回显接收输入。_kbhit()为检查键盘输入的控制台。(这里也不再细说,有兴趣可以在vs中F1查看一下)
三.贪吃蛇构架
当重要函数了解之后,我们就可以对其进行贪吃蛇蛇体的搭建以及对其移动函数进行编写:
对蛇,我们采用类的思想,将其整体放在一个类中(当然,操作函数可以单拎出来,我没有这样做,因为我傻。。。。)
3.1 初始化数据的构建

以上是蛇类构建时需要设置的基本参数和函数,当然草坪,冰面规则函数以及相关参数是根据自己兴趣进行编写的(你也可以不用添加)。
其中要说明的是:vector是一种容器,你也可以理解成一种可以无限延伸的数组,它与数组的区别就是,他可以随着程序的运行,主动的去改变这个容器的容量。(具体如何操作,可以在csdn上搜索vector,我感觉讲的蛮详细的)。
其次,COORD是一个结构体,它包含了x坐标与y坐标,在这里使用COORD正好合适,因为我们需要一个点的坐标才能对其进行绘制,当然你单独设置变量也可以但是太麻烦。
3.2 贪吃蛇形体的构建:
3.2.1贪吃蛇初始化函数

这里就要用到刚刚说的Writechar()函数对指定位置进行指定绘制。
这里的push_back,以及size()都是vector所包含的函数,具体意思不再解释,同上去csdn上搜一下vector就可以了。
3.2.2贪吃蛇移动控制函数
说到贪吃蛇的移动逻辑以及移动规则,首先我们要建立一个思路,他并不是真正的在移动,也就是说他并不一直是最开始的那几个蛇身在移动。我们要换一个思路:当贪吃蛇向某个方向移动一格时,他的蛇头增加了一个,而蛇尾则被删除了,也就是说,它在不停的增加,删除。就如下图:

具体呢,蛇的移动原理就是这样,然后就是函数的编写,将原理放在一个循环里,这样蛇就能动起来了。
函数如下:这里用到了Sleep()函数,这个函数的功能是控制循环一次的延时,也就是我们所看到的贪吃蛇移动的速度,数值越小,速度越快。当然,在这里,对于操作函数的编写,我用了一个CDIr去接受无回显输入,为的就是初始化蛇的方向,不可能贪吃蛇一开始就在原地不动吧,所以我给他初始化了一个默认方向。对于case’ ‘的用处,则是按下空格键就暂停,它的原理就是,当按下空格键后,会无回显接受一个用户输入,当输入一个字符后,再继续接下来的循环。
当然,这里我用了一个抑制蛇的反方向操作,如果贪吃蛇反方向走,应该会很不合理吧。逻辑也就不细盘了,你们看看应该就会懂吧。QAQ。(就是设置一个抑制方向的参数,然后与你的输入方向想对比。)

做到这里,就可以构建出一个简单的贪吃蛇了,虽然蛇的身体有点短。。。但是,好歹做出来了。大致图像就是这样,当然如果你的蛇头想和蛇尾设置的不一样,你可以在循环输出 也就是这,加一个判定条件,也就如下图:(当然,我就是换了个颜色,哈哈,小编偷懒了)

接下来就是贪吃蛇最原始的运行图啦,先运行下看看成就感:
下面是主函数和运行效果:


啥也没有,但是你可以控制这条2个长度的蛇到处移动了。
哦对了,在这里,我建了个功能文件Function.h,用于存放Writechar()函数和接受键盘输入函数的,这样方便调用。另外,对于Header.h头文件则是用于等等,注意哈,对于一些函数要用的头文件,我会放在最后,当然你也可以F1搜寻下下。
以上就是最简单的蛇移动程序啦,后续,我会编写地图类,以及吃到食物增加蛇的长度的函数,还有多功能食物等等。当然还有关键的存储档函数,以及单线程双蛇(感觉这个就比较简单,你单蛇会了,这个就是一个简单的复制拷贝,复制两份,再改下操作函数就行了。)

Header.h如下:(就是一个单纯的头文件,主要以后调用起来好看!!!!)

C语言与C++基础编写贪吃蛇项目1相关推荐

  1. 用C语言编写贪吃蛇项目描述,刚学C语言,想写一个贪吃蛇的代码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #include typedef struct snake { int a; int b; stru ...

  2. C语言贪吃蛇课程设计实验报告(包含贪吃蛇项目源码)

    文末有贪吃蛇代码全览,代码有十分细致的注释!!! 文末有贪吃蛇代码全览,代码有十分细致的注释!!! 文末有贪吃蛇代码全览,代码有十分细致的注释!!! 码文不易,给个免费的小星星和免费的赞吧,关注也行呀 ...

  3. 基础版贪吃蛇(C语言版本)

    文章目录 前言 一.游戏说明 二.演示效果 三.游戏代码 四.游戏代码详解 4.1初始化 4.2绘制界面 4.3蛇的死亡 4.4按键控制蛇的方向 4.5蛇的移动 4.6吃食物 4.7游戏暂停 五.主函 ...

  4. c语言mfc写贪吃蛇,手把手教你用MFC编写贪吃蛇.doc

    手把手教你用MFC编写贪吃蛇 贪吃蛇是一款经典的小游戏,它玩法非常简单,对于MFC的初学者来说,也是一个非常好的练手项目.这篇文章,将从项目创建开始来一步一步教你如何制作一个贪吃蛇小游戏.我用的是vi ...

  5. python 贪吃蛇小游戏代码_10分钟再用Python编写贪吃蛇小游戏

    Python编写贪吃蛇 前不久我们公众号发布了一篇C++编写贪吃蛇小游戏的推文,反响空前.看来大家对这类简单易上手小游戏还是很喜爱的. 恰逢2018年IEEE Spectrum编程语言排行榜新鲜出炉, ...

  6. 10分钟用python编写贪吃蛇小游戏_牛得一批!10分钟用Python编写一个贪吃蛇小游戏...

    贪吃蛇,大家应该都玩过.当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最主要 ...

  7. 怎么用python编贪吃蛇_少儿编程分享:手把手教你用PYTHON编写贪吃蛇(二)

    原标题:少儿编程分享:手把手教你用PYTHON编写贪吃蛇(二) 检测和判断 无论我们制作的简单或者复杂的游戏 这都是最关键的两个部分 事件处理循环 61. while True: # 游戏主循环 62 ...

  8. python编写贪吃蛇游戏

    关于编写游戏,是博主非常向往的东西(博主喜爱游戏),编写游戏得一步一步的走!今天我简单的编写一下非常经典的游戏贪吃蛇!!!! 效果图: 首先引入pygame模块 pip install pygame ...

  9. 贪吃蛇的使命之零基础入门贪吃蛇游戏(附演示地址)

    作者: C you again,从事软件开发 努力在IT搬砖路上的技术小白 公众号: [C you again],分享计算机类毕业设计源码.IT技术文章.游戏源码.网页模板.程序人生等等.公众号回复 ...

最新文章

  1. Interesting visualization tools for profiling.
  2. Windows下部署最新版青龙、诺兰、傻妞入门保姆级教程
  3. Quick Audience精准营销之后 良品铺子还将借力阿里云数据中台有更多动作
  4. 从技术角度聊聊,短视频为何让人停不下来?
  5. Tencent Blade team荣获小米安全年度最佳守护者
  6. CF732F Tourist Reform(dfs树、边双连通图、tarjan)
  7. Oracle中通过:触发器,存储过程,Function调用实现解析Clob字段类型中存储的xml字符串...
  8. mysql_num_rows+报错_错误:警告:mysql_num_rows()期望参数1为资源,在第19行的C:\ xampp...
  9. 8数码问题-搜索-双向BFS/A*算法
  10. 智能优化算法:学生心理学优化算法 -附代码
  11. 据说是学习python最全的资料
  12. 家庭组网 登录光猫超级账户(吉比特GM228-S)改桥接并使用路由器拨号上网 关闭QoS
  13. Win10 提示账户名与安全标识间无任何映射完成
  14. 巨头们的盈利之道:药店的这个营销方法,其他行业也适用!
  15. Windows server 2016部署WDS服务
  16. win10 网络凭据 一直显示用户名与密码不正确
  17. c语言怎么调用sdl库函数,Go调用SDL2的C语言动态库
  18. 论文阅读 Solving Mixed Integer Programs Using Neural Networks
  19. 三篇文章彻底搞懂Java面向对象之一
  20. SetFocus()函数

热门文章

  1. 岗位廉政风险防控措施
  2. 毕业年薪20万起步!24届江南大学自动化考研最新三年院校分析
  3. PS|荷塘采荷背景渐变练习
  4. Python3-word文档操作(三):利用python修改word文档的内容
  5. Qt Tcp网络助手
  6. Linux报bus error(总线错误)解决办法
  7. ADODB.Connection 错误 '800a0e7a' 未找到提供程序
  8. 趣图:我小妹的男友是一个程序员
  9. 解决在爬虫时出现的 ‘NoneType‘ object has no attribute ‘text‘
  10. linux echo写入空文件夹,如何用sed命令往空文件中写入数据