贪吃蛇是一个家喻户晓的小游戏,代表蛇的方块在屏幕中不断的变换位置,当方块碰到食物时,蛇身会变长一次,随着碰到的食物数量积累,蛇身会越来越长,同样的,游戏的难度也会越来越高,最后往往由于计算失误,一头撞死在自己身上。
贪吃蛇示例BETA 提取码:bkc2
在这里博主用了两个对象来实现蛇的身体,前一个对象负责盖图章,每移动一次就盖一次章,后一个对象的颜色同背景色相同,负责擦除一块盖章的图象。这样第一个对象盖一个图章,后一个对象删除贪吃蛇尾部的图章,就实现了蛇的移动。
首先实现蛇的控制部分,当按下上下左右按键时,让蛇面向不同的方向,因为蛇只能转弯而不允许掉头,所以这里增加了一个判断,比如当面向180度时,就不允许通过向上键换向到0度。
接下来我们需要两个列表数据,来分别存放蛇的x、y的坐标,负责盖章的角色每运动一次,就在列表的尾部添加一个坐标项目。因为是在尾部添加的,所以列表的第一项始终是蛇的尾部坐标。程序初始化后我们先让蛇头移动3次,这样我们就有了3组坐标,将3做为小蛇的初始长度。
运行3次后的效果如下,可以看到列表中已经有了3组数据,接下来我们会设置一个重复执行的积木,让小蛇一边盖章,一边删除尾部的图像,这样就产生了一个小蛇不停运动的假象。
图中是重复执行部分的积木,如果小蛇撞到了自己,那么就停止游戏过程,贪吃蛇有两种玩法,一种是允许穿越屏幕,另一种当然是不允许。在这个示例中,当蛇超过屏幕范围时,坐标会超过允许的上限,导致小蛇的蛇头在盖章前被挤回来,这样就会被检测为碰到了紫色色块,游戏也就结束了。否则的这一部分后续我们还需要添加更为复杂的判断,因为我们需要分为吃到食物与没有吃到食物两种情况,有兴趣的亲也可以先自己尝试一下,这里我们暂时没有考虑有食物的情况,所以只是简单的发送了一个消息。这个消息发给谁呢?发给我们负责善后的对象,也就是负责擦除小蛇尾部的空白对象。
以上是空白对象上的积木,当接收到消息时,它会移到小蛇的尾部,并且同样盖一个章,因为空白对象颜色同背景相同,所以这次盖章的效果等同于删除。实际运行效果亲们可以下载实例测试一下,下一节我们完善一下贪吃蛇的食物部分。