iOS 贪吃蛇单机版的实现

来源:互联网 发布:单片机usb下载电路 编辑:程序博客网 时间:2024/04/28 07:32

github地址:贪吃蛇小游戏

前言

前天了解到疯狂iOS讲义这本书。

上面有一个手势教学的代码实例:贪吃蛇。

于是找到了它的电子版和源码。进行学习。


做出来的效果就是这样的,可能样子有点丑,但我也不知道为什么就突然想起粉色和灰色的配搭。

所以观影出现不适,本人概不负责,哈哈哈~

正文

我设计的这个界面有一个暂停和继续的按钮,还有一个RetroSnaker的Label彩蛋,内容是游戏规则。

其余的功能和经典贪吃蛇别无二致~


首先,说的是贪吃蛇游戏的几个重要的逻辑。

1.贪吃蛇是需要在规范的“格子”布局上运动的。这就要确保“宽高”是整数。我们需要按照某个格式,将界面划分为整齐的格子布局。特地学了photoshop画了个格子布局给大家展示:


2.贪吃蛇自己的身体,以及吞食食物时身体的加长。这里通过数组保留身体的数据。当贪吃蛇吃到食物之后,不仅身体长度+1,食物所在的位置便成了蛇头的位置。

3.贪吃蛇是运动的。我们需要通过计时器实现,并要保证身体按照某个方向持续前进。

4.贪吃蛇的蛇头方向需要我们操控,我们通过具有方向的滑动手势实现操控方向。

5.贪吃蛇的身体,需要我们绘制。这里的重点是蛇头的开口角度。

综上五点(不知道全不全),是我认为贪吃蛇小游戏理解的重点。说一句题外话,好佩服那些创造游戏的人,脑回路是如此惊人。即使是如此简单的游戏,背后的逻辑,以及思考都如此缜密细致。故此,向经典致敬。


其次,说一下创作思路:

既然前面思考过了,我们需要把蛇的每一段身体作为一个在格子(坐标轴)上的点来处理。因为我们屏幕上正常的CGPointMake(1,1)的点太小,我们需要自定义一个点,就是我代码中的CustomPoint,这个点是用来表示蛇的身体。很好理解,就是宽高为20或30(point的size是由作者自定义的)的一个小正方形。

接下来我们就要把贪吃蛇的界面做出来,也就是我代码中的GreedySnakeView。

我们需要建立一个数组存储蛇的身体数据,初始化的时候我设定蛇有4段身体,1个头,数组中默认添加五个点作为蛇的整个身体。

然后我们需要一个计时器让贪吃蛇有节奏的前行,通过控制计时器的开始,暂停,继续,结束,来控制贪吃蛇的活动。

说到这里,就需要一个展示方向的参数来告诉贪吃蛇要往哪个方向前进,我们这里用了枚举,罗列了上下左右四个方向。通过滑动手势判断玩家的控制方向,然后告诉贪吃蛇需要前进的方向。默认向右。上下左右四个方向的变化,在贪吃蛇身上是通过x和y坐标的变化体现的。

这就是我们主要需要的几个属性。

因为是个游戏,考虑到加入音效更加情景化,所以加了两个声音片段,在不同的情况下触发播放音效的事件。

为了区分贪吃蛇的活动范围,为贪吃蛇游戏界面赋予背景颜色,加入了背景颜色的属性。

最后,在贪吃蛇出现错误的时候,游戏结束,会提示玩家此次得分,这便是数组内点的数量的体现。


我写的代码就不贴出来了,需要的伙伴们可以去github上下载下来~








原创粉丝点击