游戏创作说明
本次要创作的Scratch作品是《鲸鱼的冒险》,游戏中的主角虎鲸在海洋中捕食猎物,它的猎物有鲑鱼和海豹,但同时也需要时刻注意躲避海洋垃圾,一旦碰到海洋垃圾就会死亡,游戏结束。
游戏的操作方式非常简单,玩家可以使用方向键“↑”、“↓”、“←”、“→”来控制着虎鲸移动,每吃掉一条鲑鱼就得2分,而吃掉一头海豹则得5分,碰到海洋垃圾就结束游戏。
完整的效果如视频所示:
编程思路
游戏一共有4个角色,它们分别是鲸鱼、鲑鱼、海豹和海洋垃圾,我们可以分角色逐个来编程实现。4个角色都和运动有关,因此本作品的核心是如何实现角色的运动编程,其中鲑鱼和海豹还涉及到克隆技术。
程序设计
打开Scratch编程软件,将默认的小猫角色删除掉,并导入相应的舞台背景和4个角色。
1.虎鲸的上下左右移动
虎鲸是一种智商极高的动物,情感丰富,语言系统强大。有时虎鲸甚至会捕食其它鲸鱼或鲨鱼,是当之无愧的海中霸王。
角色初始化
在Scratch编程中,我们要养成初始化的习惯,即对角色进行一些初始设置,确保游戏有一个明确稳定的初始状态,常见的初始化设置包括角色的位置、方向、大小、造型和旋转方式等。
这里,我们只需要对位置、方向、旋转方式进行设置即可,如图所示:

四个方向自由移动
在Scratch中,要实现角色的运动,有三种方式:
- 使用在1秒内移动到(x,y)或1秒移动到某角色位置
- 使用面向方向 + 移动10步指令
- 使用将x坐标增加或者将y坐标增加指令
其中,第二种和第三种方式都需要结合循环来实现,我们要根据实际需要来选择使用哪种方式,如果角色只是左右移动或者上下移动,使用第三种方式,也就是改变坐标的方式最为简单。
由于我们是在按下方向键的时候,虎鲸才运动,所以需要使用按键侦测指令来检测是否按下方向键了,编写代码如下:

针对这段程序,需要注意两点:
- 在Scratch中,没有将x坐标减小和将y坐标减小指令,不过我们可以使用负数来解决这个问题,增加一个负数,比如-10,就相当于是减少了,这样可以节省不少指令,非常的灵活。
- 在左移和右移的时候,还设置了方向,这是确保虎鲸的造型和运动方向是一致的,不至于出现往后退的情况,同时由于造型翻转了,必须要将旋转方式设置为左右翻转,否则就可能出现倒着走或者根本不翻转的奇怪现象,所以在初始化时加入了将旋转方式设置为左右翻转指令。
2.鲑鱼
鲑鱼,又称三文鱼,常见生活在太平洋、大西洋,属溯河洄游性鱼类。溯河产卵洄游,需要经过长途跋涉,才能到达产卵场产卵,也是虎鲸比较喜欢的食物。
鉴于这里的鲑鱼有很多条,我们需要考虑如何让舞台上同时出现多个相同的角色呢,一般来说方法有两种:
- 复制多个角色
- 使用克隆机制
两种方法都可以实现我们想要的结果,很显然,使用克隆更为简单一些,因此,我们使用克隆来实现鲑鱼的功能,克隆分两步机进行,分别是生成克隆体,然后在对克隆体进行编程。
生成克隆体的代码如下:

有了克隆体,还需要对克隆体进行编程,从而让克隆体动起来,这里仍然使用改变坐标的方式来实现鲑鱼角色的运动,编写代码如下:

这里使用了一个小技巧,就是先对克隆体的位置进行随机,再判断其位置是在舞台的左边还是右边,如果是左边,那就从舞台最左边开始运动到舞台右边,反之就从舞台最右边移动到最左边,当到达对面舞台边缘的时候,就删除克隆体。
3.海豹
海豹,有着蓝黑色斑点,头近圆形,眼大而圆,是虎鲸喜欢的食物。
海豹角色的效果和鲑鱼基本上是一样的,可以直接将鲑鱼角色的代码复制过来,如下所示:

4.海洋垃圾
虎鲸作为海洋中的霸王,它们所面对的危险不是更强大的猎手,而是人类垃圾对海洋的污染,一定要将垃圾分类扔进垃圾桶哦。
我们这里使用塑料瓶子来表示海洋垃圾,这里只设置了一只塑料瓶子,所以不需要克隆,其运动实现方式和鲑鱼类似,因此可以借鉴鲑鱼角色的实现方式,编写代码如下:

5.计分功能及结束机制
4个角色的运动效果都有了,接下来需要添加计分功能了,这里设定每吃掉一条鲑鱼得2分,吃掉一头海豹得5分,首先建立一个全局变量,将其命名为分数,同时对分数进行初始化,将其放在虎鲸角色的绿旗指令下方即可,如图:

然后在鲑鱼中添加代码如下:

注意,这里使用了等待条件指令,而不是循环指令嵌套条件指令,针对这种只需要判断满足条件的情况,使用等待条件指令更为简单。
同理,在海豹角色中编写代码如下:

当鲸鱼碰到塑料瓶时,游戏结束,切换到虎鲸角色,添加代码段如下:

6.添加背景音乐
最后,我们给整个游戏添加一个背景音乐,切换到舞台背景,先添加一个音效,比如cave,再添加代码块如下:

创作总结
本次的Scratch游戏创作到这里就结束了,整个作品代码量为110左右,不算很难,重点注意如下两点:
- 实现角色的运动有3种方式,尽量使用最简单的方式来实现
- 针对只需要一次判断的情况,优先使用等待条件指令,简化代码,这样就不需要使用重复指令嵌套条件指令了,非常好用。
针对本作品,你还可以添加更多的鱼类,比如鲨鱼,也可以充分发挥自己的创意,进行二次创作。有需要源代码的读者,可以联系本作者。
暂无评论内容