贪吃蛇小游戏的数据结构和核心代码

引言

本系列是《从零开始开发贪吃蛇小游戏到上线系列》,顾名思义,小游戏的核心内容是贪吃蛇,本文跟随笔者来探讨一下贪吃蛇的核心玩法、数据结构和核心代码。

我们重点要掌握的是游戏开发的思维和抽象化,源码和成果展示在文末,小伙伴们可自行前往查看。

贪吃蛇的玩法

我们来重温一下贪吃蛇的玩法:玩家扮演一条小蛇,在有限的空间内不断吃食物并逐渐变长。玩家需要通过控制蛇的移动方向,躲避自身的尾巴和墙壁,以免游戏结束。随着蛇身的增长,游戏难度逐渐增加,需要玩家运用敏捷的反应和策略来挑战自己的最高纪录。这款游戏具有简单的操作和上瘾的玩法,让人重温经典的怀旧乐趣。由此可见我们将游戏玩法拆分一下:

1.在有限的空间。就是我们小蛇移动以及食物产生的地图。

2.小蛇的绘制。

3.食物的随机产生与绘制。

4.小蛇的移动、吃食物以及方向控制。

5.小蛇碰撞墙壁或者自己的身体后游戏失败。

地图的绘制

1.首先我们来看下贪吃蛇移动的地图,笔者最终将尺寸定在13*16个格子:

贪吃蛇小游戏的数据结构和核心代码_第1张图片

2.地图以及相关数据的声明:

3.我们把地图13*16个格子按照从左到右从上到下的顺序组成gameMap数组:

4.地图的绘制,我们定义把地图的格子alpha值即透明度设置成0.1,将蛇和食物的格子alpha值设置成1:

小蛇的绘制

1.小蛇的核心属性包括两个,其中一个是小蛇的每一节身体组成的链表,另外一个就是小蛇的方向:

2.我们初始化一下小蛇的位置和方向,我们把小蛇的初试长度设定为3格,把小蛇放第8行第4列为起点,方向向右:

贪吃蛇小游戏的数据结构和核心代码_第2张图片

3.小蛇的绘制:

4.其中注意的是,我们地图是一个格子数组,小蛇的数据结构是坐标点数组,因此我们需要将小蛇的坐标转换成地图格子的下标:

小蛇的移动、吃食物和方向控制

1.小蛇移动的大概逻辑:首先获取小蛇的头部,然后根据小蛇的方向得出小蛇头部下一个移动到达的点,把该点插入小蛇的头部(链表的顶端),然后把小蛇尾部的节点移除来形成一个向前移动的过程。吃食物的情况就是下一个移动到达的点是食物,直接把该点加入到小蛇的头部,但不需要从尾部移除节点。然后重新产生新的食物。

贪吃蛇小游戏的数据结构和核心代码_第3张图片

2.小蛇方向的控制就比较简单了,根据玩家按下的按钮,改变小蛇的方向,根据规则小蛇只能把方向改成与之垂直的2个方向:

贪吃蛇小游戏的数据结构和核心代码_第4张图片

3.然后按帧率绘制小蛇和地图:

贪吃蛇小游戏的数据结构和核心代码_第5张图片

小蛇碰撞墙壁或者自己的身体

1.判断触及墙壁,坐标小于0或者大于边界值:

2.判断触及自身,坐标为蛇数据中的点:

成果展示

贪吃蛇小游戏的数据结构和核心代码_第6张图片

总结

本文的重点内容主要有以下几点,小游戏虽简单,但是重要的是开发的思维,不知道小伙伴们是否已经理解:

  • 分析贪吃蛇的核心玩法。
  • 将贪吃蛇的玩法抽象化。
  • 分步骤用代码实现贪吃蛇的功能。

本文相关源码,关注"亿元程序员",发送"snake"获取。

本系列是《从零开始开发贪吃蛇小游戏到上线系列》,欢迎大家订阅。

笔者已经上线的小游戏《填色之旅》《重力迷宫球》大家可以自行搜索体验。

感兴趣的小伙伴记得关注"亿元程序员"哦,学习小游戏开发不迷路。欢迎大家一起交流。

喜欢的可以点个赞同、点个在看哦!谢谢大家。

本文由mdnice多平台发布

你可能感兴趣的:(小程序)