首页 百科知识 贪吃蛇游戏

贪吃蛇游戏

时间:2023-10-16 百科知识 版权反馈
【摘要】:贪吃蛇游戏是一款经典的游戏,在使用Visual C++6.0控制台,调用基本的C语言语句,尽可能少的使用控制台函数和系统函数的情况下,编写了本章的贪吃蛇游戏。为了便于读者的理解,本游戏只实现贪吃蛇的核心功能,读者可自行开发完善。为了使用方便,使用该结构分别建立蛇头结点、蛇身结点和蛇尾结点。判断蛇吃到食物的方法是比较蛇头和食物的位置是否重合。

贪吃蛇游戏

贪吃蛇游戏是一款经典的游戏,在使用Visual C++6.0控制台,调用基本的C语言语句,尽可能少的使用控制台函数和系统函数的情况下,编写了本章的贪吃蛇游戏。为了便于读者的理解,本游戏只实现贪吃蛇的核心功能,读者可自行开发完善。

一、需求分析

为了把贪吃蛇游戏的核心功能分析透彻,把游戏功能分解成以下几个方面逐一讲述和实现:

(1)构建蛇结构和食物数据结构;

(2)蛇身如何移动;

(3)食物如何随机出现;

(4)吃到食物,蛇身变长;

(5)蛇死亡,游戏结束判读;

(6)绘制场景、蛇和食物。

二、总体设计

考虑到存储蛇和控制蛇的实现方便性,建立如下数据结构,存储蛇结点如下:

img463

描述一个蛇结点,仅仅知道结点位置显然是不够的,需要建立该结点与前驱和后继的关系才行,这样移动蛇身才变成了可能。为了使用方便,使用该结构分别建立蛇头结点、蛇身结点和蛇尾结点。

食物有位置、不同的外观和分值(这一点代码中没有涉及),所建立食物结构如下:

img464

img465

三、功能模块实现

下面将分别讲解蛇身移动方法、食物如何随机出现、吃到食物、蛇身加长和蛇的死亡判断,最后给出题目源代码。

(1)蛇身移动方法

举一个简单的例子,有两个数分别是a和b,如果要把a变为p,把b变为a,伪代码该如何实现呢?

应该这样写:b=a;a=p;从后至前依次赋值,才能得到正确结果。这和移动蛇身的道理是一样的,循环遍历需要从蛇尾至蛇头,最后移动蛇头至下一个位置。

(2)食物随机出现

出现的食物要满足两个要求:①食物的位置是随机的,可以是场景中的任何位置;②食物不允许出现在蛇身中。

要实现第一个要求,需要使用随机函数发生器产生食物的垂直和水平位置,和食物的价值;要实现第二个要求,需要在生成一组位置值后,判断和蛇身位置的关系,如果存在相同的情况,就需要重新生成食物位置,直到不相同为止。

这里需要注意的是,如果蛇身太长,判断的次数就会很多,游戏就可能消耗了很多时间仍无法找到满足要求的位置值,此时可以根据蛇头的位置,直接指定它周围空闲的位置为食物出现的位置(如果蛇头周围不存在任何一个空闲位置,这种情况蛇肯定死亡了,游戏也要结束了)。

(3)吃到食物和蛇身增长

判断蛇吃到食物的方法是比较蛇头和食物的位置是否重合。如果吃到了食物,简单处理的话,就可以增长一次蛇身,新增的结点追加到蛇尾,再随机生成一个新食物。

(4)蛇的死亡判断

判断蛇是否死亡的方法是检查蛇头和蛇身其他结点是否重合,如果有重合,就标志着蛇死亡。

四、源代码

基于上面的讲解,下面代码详细注释了函数和语句的功能,能够让读者更好的领会贪吃蛇游戏的具体实现方法。

img466

img467

img468

img469

img470

五、系统运行

单击【调试】工具栏中的编译按钮、链接按钮和运行按钮即可运行该游戏,下面是游戏运行中的截图。

img472

六、小结

本章所给出的贪吃蛇游戏代码是使用链表实现的,功能还很不完善,读者可以在分析并理解后,编写功能更加完善的贪吃蛇游戏代码。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈