最新消息:

用Scratch制作贪吃蛇

Scratch 少儿编程 3922浏览 0评论

友情提示:视频教程观看时请手动设置清晰度。

贪吃蛇作为一款经典的单人游戏,操作简单,可玩性高,在诺基亚的高光时代曾经风靡全球。今天,我们就用Scratch来实现基本的贪吃蛇游戏

首先,我们先分析一下游戏的任务目标和规则。

贪吃蛇游戏的目标,是控制蛇尽可能的多吃食物,不要碰到边界和自己的身体。根据这个任务目标,我们达成一下的规则:

1、蛇本身在不停的运动,玩家可以通过方向控制其运动的方向,但不能改变速度

2、蛇头碰到边界或者自己的身体,就要GAME OVER。

3、蛇每吃到一个食物,就奖励一定的分数,相应的也会增加身体的长度,提高游戏难度。

4、食物随机出现在屏幕的任何位置,每次出现一个,被吃掉一个就会立刻出现一下个。

明确了目标和规则,我们再来看具体的实现过程。贪吃蛇游戏总体来说不太复杂,基本使用方向控制、触控、显示/消失就能够完成。然而实际做起来,就会发现这里面还是存在一个难点,那就是如何延长蛇的身体,并保持跟随蛇头一起运动。在这里,我们主要探讨如何解决这一困难,其它诸如键盘控制方向、显示/隐藏、加分等编程就不详细说明了,可以自行探索解决。

那么应该如何解决蛇的身体跟随蛇头一起运动的难题呢?我选择使用Stamp图章来进行。

1、建立三个Sprites,分别是蛇头、身体和身体擦除模块。

用Scratch制作贪吃蛇

2、保证这三个Sprites的形状、尺寸相同。

用Scratch制作贪吃蛇

3、建立一个Food Sprite,可以在其Customes中多增加一些食物的图片,看上去会丰富一些。

用Scratch制作贪吃蛇

4、建立三个List变量,分别存储蛇头的x、y坐标,以及方向。

用Scratch制作贪吃蛇

5、蛇头每移动一步,就把当前的坐标和方向数据,添加到对应的List变量的最末端。同时,蛇头的Code中,还需要加入对四个方向键的控制,以及Touching的条件判断。在这里,我把蛇头和蛇身体设置了不同的颜色,这样通过Block用Scratch制作贪吃蛇就可以方便的判断蛇头是否已经撞到了蛇身上。

用Scratch制作贪吃蛇

6、通过上面这个forever的循环,我们可以看到,蛇头前进的每一步,其坐标值都对被存储在X、Y的LIST中。由于我们使用的add是追加模式,也就意味着越靠近LIST底部的坐标,就越接近蛇头当前的实际位置,而LIST的第1项坐标值,就是距离蛇头最远的位置,也就是蛇尾的位置。明白了LIST中坐标的关系,我们就可以开始编写蛇身的CODE了。

7、对于蛇身的CODE,我们的策略很简单,就是让Sprite重复蛇头经过的坐标地址,并在上面盖一个Stamp印章,留下印记。这样看起来,就好像蛇头拖着一条长长的身体在运动。

用Scratch制作贪吃蛇

8、写到这里,让我们点击小绿旗运行一下,看看是什么效果。嗯,没错,蛇已经可以正常的跑动了,就像下图一样。然而,我们发现,蛇的身体会越拉越长,尾巴好像被钉在了地上,没有游动的感觉。因此,我们必须在蛇身体不断盖图章的时候,还要根据实际身体的长度,不断的把超出长度的图章擦除掉。可是在Scratch中并没有擦除图章的BLOCK怎么办呢?这就需要用到我们刚才建立的Sprite:身体擦除模块了。

用Scratch制作贪吃蛇

9、身体擦除模块实际上是一块跟蛇身同样形状,同样大小的Sprite,只是颜色跟背景色一样是纯白色。我们先判断出当前蛇的身体长度应该是多少,然后用白色的Sprite移动到超出长度的位置上,再画一个印章。这样就用一个新的,跟背景一样的白色印章,覆盖了刚才蛇身体画出来的印章,在视觉效果上,就是蛇整体向前移动走了。

用Scratch制作贪吃蛇

至此,贪吃蛇的游戏就基本完成了,总结一下里面的注意事项:

1、用用Scratch制作贪吃蛇来控制蛇头每次的移动步数时,要确保一次移动的长度大于蛇头的尺寸。否则蛇头和蛇身会融合在一起,引起触碰的误判。

2、蛇头和蛇身的颜色要有区别,触碰判断要使用用Scratch制作贪吃蛇BLOCK,而不是用用Scratch制作贪吃蛇

3、食物如果随机出现在屏幕上,有可能会刚好出现在蛇的身上,要避免这种情况出现。

4、方向控制只能有转向,而不能有180度的掉头,因此在方向控制方面,需要分别针对上下和左右多增加一层条件判断。

您必须 登录 才能发表评论!