C语言如何实现贪吃蛇小黑窗
导读:本文共5022.5字符,通常情况下阅读需要17分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 思路:1.利用整型二维数组保存显示数据,小蛇每移动一次清屏并便利数组做到动态效果。每次移动(清屏)的间隔时间控制了游戏难度,这个时间应不断缩减,直到游戏结束。2.需要保存小蛇移动的方向,然后写一个函数通过小蛇的移动方向去处理二维数组中的数据,达到移动小蛇的目的。3.小蛇的移动可分解为两个过程:头部像前方生长一格然后尾部消去一格。如果蛇头吃到食物,尾部无需消去,此... ...
目录
(为您整理了一些要点),点击可以直达。1.利用整型二维数组保存显示数据,小蛇每移动一次清屏并便利数组做到动态效果。每次移动(清屏)的间隔时间控制了游戏难度,这个时间应不断缩减,直到游戏结束。
2.需要保存小蛇移动的方向,然后写一个函数通过小蛇的移动方向去处理二维数组中的数据,达到移动小蛇的目的。
3.小蛇的移动可分解为两个过程:头部像前方生长一格然后尾部消去一格。如果蛇头吃到食物,尾部无需消去,此时应立即随机生成一个新的食物。
4.游戏开始时小蛇应随机生成在地图某一位置,此时小蛇的默认移动方向也应该是随机的。
5每次移动前应接收玩家由键盘输入的移动方向,如果接收到后,判断合法后将其设为小蛇的默认移动方向,如果玩家未进行任何输入,小蛇应按照默认方向移动。
1.小蛇移动
该函数需要拿到蛇头当时所在的位置坐标和小蛇的移动方向。随后可由蛇头位置往移动方向往前生长一格,即将二维数组中目标移动位置的数据设置为小蛇的数据。消去蛇尾另写一个函数,调用前需先判断是否吃到食物,是否撞到墙壁或者是自身,然后决定是否削去尾部。消去蛇尾需获得蛇尾的位置,所以我们在该函数内加入递归搜索蛇尾的算法:进入函数后先判断此时的位置是否为蛇尾,若不是就将自身位置往后移动一格(将蛇身往后一格的坐标输入给DeleteTail函数,然后继续此过程),直到遇到蛇尾,然后将其消去(置零)。
具体代码实现如下:
2.输入
在实际代码实现的过程中,我发现scanf函数无法实现需求,理由是程序执行到scanf语句时,会停留在该位置,直到scanf函数扫描到输入后,程序才会继续进行。经学习查阅,决定使用kbhit函数扫描此时键盘缓冲区中是否有数据:如果有就读取第一个数据,并将后面的数据清空,避免后面使用该数据,若没有数据,缓冲区不做任何处理,程序也应当继续执行。
使用kbhit函数前应“#include<conio.h>”。清理缓冲区运用的是getch()循环。代码如下:
完整源代码:
C语言如何实现贪吃蛇小黑窗的详细内容,希望对您有所帮助,信息来源于网络。