全系列Index:
- 【原创】只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(一)
- 【原创】只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(二)
- 【原创】只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(三)
- 【原创】只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(四)
本文将分析贪食蛇游戏的基本结构。
根据上一篇文章的分析,我们需要确定以下几个点:
- 什么是贪食蛇游戏的输入?如何获取贪食蛇的输入?
- 我们如何表示贪食蛇的地图以及贪食蛇的食物?
- 最为关键的,我们如何表示贪食蛇?
- 游戏如何得分?
- 游戏如何结束?
一、什么是贪食蛇的输入?如何获取贪食蛇的输入?
最基本的应该有四个输入,分别控制贪食蛇向上、下、左、右四个方向运动。
输入自然就是来自键盘。具体哪个键,就取决于你如何定义了。
注意:我们需要侦测键盘被按下的事件,进而判断输入的字符是否是我们定义的按键。
在windows平台下,conio.h头文件中,有一个kbhit()函数,功能是检查当前是否有键盘输入,若有则返回一个非0值,否则返回0。我们可以用来配合getch()来获取用户的输入并加以判断。
二、我们如何表示贪食蛇的地图以及贪食蛇的食物?
我们可以用一个填满空格的char型二维数组来表示贪食蛇的地图,用一个你喜欢的字符来表示食物,比如'#'。注意:食物有他的坐标,需要一个结构体来承担。
三、我们如何表示贪食蛇?
首先,我们选择用'*'号来表示蛇的身体。
我们只需要两个元素,就可以定位一个贪食蛇。一个是贪食蛇的蛇头,我们用来控制贪食蛇的运动方向,而判断贪食蛇是否触壁死亡、触身死亡 、吃到食物,凭借贪食蛇蛇头和当前坐标内储存的字符就足够了。
其次是贪食蛇的蛇尾,我们只需要维护一个蛇尾,正确的跟随蛇头变化,就可以做出贪食蛇的移动,同时仅凭蛇尾,我们就能做出蛇吃到东西变大的效果
具体代码
1 struct SnakeTail 2 { 3 int x; 4 int y; 5 }; 6 struct SnakeHead 7 { 8 int x; 9 int y; 10 int dis; 11 }; 12 struct Food 13 { 14 int x; 15 int y; 16 };
四、游戏如何得分?
吃到食物,然后给食物一个新的随机坐标
五、游戏如何结束?
贪食蛇死亡为止。
碰到地图边缘、碰到自己身体。
(待续)