上一次用construct2做了一款类似打飞机的游戏,这次用C语言写一个简单的命令行窗口游戏–贪吃蛇。
比起面向对象编程的construct2,用面向过程的C语言写起来自然更有难度。
考虑到程序的复杂性。我决定先用置顶向下的方法分析一下贪吃蛇程序所需的代码。
学习记录
复杂的程序要尽量分解成小问题
0.主程序
如果 游戏还在运行
打印地图
输入控制指令
让蛇运动
打印地图
否则
让游戏结束.
1.打印游戏界面
我们将整个游戏地图(包括墙,空地,蛇和食物)储存在一个二维数组里。然后逐行进行打印即可。当数组里的数据不断更新,我们不断清屏打印地图出来时,就可以让人的眼睛以为是连续的动画画面。
学习难点记录:
打印地图时是(Y,X)型的打印,而不是熟悉的(X,Y)坐标。
清屏的操作。
2.控制蛇移动
我们通过键盘上的”WSAD”来对应蛇移动方向的“上下左右”。
然后在蛇走之前先判断蛇的下一步是什么,如果是墙或者是自己的身体,则让蛇死亡,如果是食物则让蛇长长一节。
3.放置食物
我们采用随机函数来产生食物的坐标,若新的坐标上已有物体,则重新生成
学习难点记录
控制蛇的长大,食物的随机产生
智能蛇
但是这样的贪吃蛇并不能自己移动,所以我们得借助kbhit函数。该函数能检查是否有键盘输入但是不阻止weile循环的继续,这样蛇就能动了。
此外,我们还可以写一个让蛇自动跑的智能算法。
让蛇判断四个方向哪个是可行的并且能最快到达食物。
学习难点
无阻塞的输入控制
蛇的智能判断
放张动图看下效果吧。