【置顶】贪吃蛇-C语言全分析
写在前面:
作为初学者,这学期学完了C语言,有必要写一款实用的软件,给自己一个交代,不是书上的hello world之类的简单程序了。
写游戏是一个不错的选择,可以较为综合利用学到的知识,实践是把知识联系起来。不喜欢玩游戏,可是写游戏还是很想试一试。
贪吃蛇作为经典游戏,简单好做,是初学者值得尝试的一种游戏。本游戏调用了些库函数等,不懂的同学可以百度百科哦
本文分为游戏分析,程序功能分析,代码实现,总结四个部分
第一部分:游戏分析
贪吃蛇:玩家控制一条一定时间移动一格的蛇 ,去吃到食物,使蛇增长,得到分数,尽可能的获得更多的分数。
第二部分:程序功能分析
1…蛇能移动,并且玩家可操作移动方向
2…食物随机出现在游戏区域某一位置
3….打印出字符方块(2X1)为蛇的一节,
解决方案:调用windows api 控制光标在程序出现的位置(头文件windows,h)
随机函数用rand等函数实现(头文件time.h)
用数组储存蛇每一节的坐标,每刷新一次擦除原来的蛇,然后打印出新的蛇
第三部分:代码实现
自定义函数一览
头文件,变量声明部分
蛇结构体声明部分
main函数部分
调用函数 _xy(int,int) 可以实现将光标移到指定位置
game_welcome函数 确定游戏初始界面 PS(这条蛇来自搜狗字画符)
game_welcome函数中的循环控制玩家选择 开始或者退出
效果图
游戏数据初始化 game_format 函数
进入主控函数 game_control()
没有输入的情况中
变量ii为标记变量,由于每次主循环的时间为10毫秒( Sleep(10);函数实现 ),所以每次循环ii自加10 ,
ii大于speed速度变量后,就打印出自动前进的蛇,ii初始化为10
如果主循环不设置间隔时间,那么CPU 会一直处于占用状态,使用率会很高,而且游戏速度也不好
控制,会局限于每台电脑的配置。
pri_snake函数构成
先消除原来的蛇,在坐标变换,在输出新的蛇。
坐标变换,由于情况比较多,这里只举例一种
pri_food 函数
游戏截图
总结:
写程序可以增加所学的知识的连贯程度,使用熟悉度
写在后面:
能力有限,本程序还有很多不足,代码也不好看,
第一次写技术类日志,很多地方模模糊糊,望谅解。
其他分享阅读:
控制台的坦克大战 https://www.oschina.net/code/snippet_1391394_33835
C++版本简易Flappy bird https://www.oschina.net/code/snippet_1391394_34466