【置顶】贪吃蛇-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

Scroll Up