带孩子玩Scratch编程:学龄前趣味程序(4)

上一篇

(4) 跳跳小鬼躲豌豆

Scratch植物大战僵尸-吐豌豆

程序目标描述

在这一集中,PvZ 中的大明星——豌豆射手闪亮登场。我们让豌豆从豌豆射手嘴里不断吐出来,射向牛仔小鬼。玩家可以按空格键让牛仔小鬼跳起来再落下。如果豌豆打到牛仔小鬼,则增加一些伤害值,同时为牛仔小鬼的形象添加一些鱼眼特效。一局游戏总计吐 10枚豌豆,累计伤害值会显示在屏幕左上角(“我的变量”)。最后,看看谁的累计伤害值更小吧。

素材准备

牛仔小鬼的素材在 PvZ 游戏 reanim 文件夹中,以 fla 格式保存。我将其转成了透明 PNG 文件。豌豆射手的素材在网上很多,如 http://plantsvszombies.fandom.com 网站等。

小鬼僵尸

豌豆的豆粒,我们就用 Scratch 内置的 Button1 角色即可。

场景布置

我们选择了 Scratch 中自带的“Savanna”舞台背景,上传牛仔小鬼角色 zombieimp 和豌豆射手角色 peashooter 的素材。豌豆射手,我们放在屏幕左侧中部。牛仔小鬼,放到屏幕右侧。

对于豌豆射手角色,进入“造型”活页卡,在造型编辑窗口中,点击“转换为矢量图”,然后移动豌豆射手的位置,让豌豆的嘴大致在画面中心标记处(这样是为了在后续程序中,豌豆看起来是从豌豆射手的嘴里吐出来的)。

同样,对于牛仔小鬼角色,也在造型编辑窗口中点击“转换为矢量图”,然后将它移动到画面中心标记处。

对于豌豆粒 —— 我们直接点“添加角色”里的“选择一个角色”,并找到 Scratch 内置的 Button1。Button1 其实是一个圆形摁扭,只是颜色和形状长得比较像豌豆。它的默认大小比较大,我们在角色属性里,将它的大小改为 25,使它更像一粒豆子。

最后,我们回到“代码”活页卡,打开“变量”积木箱,把“我的变量”前面的勾挑上。这样,“我的变量”和它的值就将显示在屏幕的左上角了,我们用这个变量显示我们游戏里的“总伤害值”。

布置完成后,屏幕如本文篇头的图片所示。

代码搭建

光看描述,觉得这个程序挺复杂,不过我们还是只用了 18块积木就完成了它。先编辑豌豆(Button1)的代码空间:

Scratch植物大战僵尸-吐豌豆第1步

这里我们用了两个“重复执行(  )次”积木嵌套,使它稍微有了一定结构复杂性,同时我们用了一个“运算”中的“在(  )和(  )之间取随机数”积木,引入随机因子。

牛仔小鬼(zombieimp)的代码空间:

Scratch植物大战僵尸-吐豌豆第2步

运行

Scratch植物大战僵尸-吐豌豆第3步

点绿旗子开始游戏。摁空格键时,牛仔小鬼将跳起来躲避豌豆,但是豌豆射手似乎总是瞄准它上一秒的位置,所以想躲避豌豆不那么容易哦。不一会儿,牛仔小鬼就被打成了“大胖子”(鱼眼特效)。

通过引入计分(伤害值),这个短程序可玩性有所增加,想 10个豆吐完伤害值在 5分以下,会颇有一定挑战性。两人轮流游戏,看谁的伤害计分少吧。

家长还可以添加一个“最佳纪录”变量,在“停止脚本”积木前进行最低伤害值纪录更新,进一步增加可玩性。

讲解

在这一集的程序中,可讲解的点很多,例如双重循环、随机数等。但比较有特色也易于小朋友理解的,应当是“变量”的概念。在程序运行过程中,会有一些数字的值是在不断变化的,它们都属于变量。今天我们特意在屏幕上显示了一个“我的变量”,并在程序中修改它的值,这就是一个典型的变量。

其实,不光这种显然的“我的变量”是“变量”,程序中很多信息都是以变量的形式存在的。例如角色的 x坐标、y坐标、大小、方向、造型的编号、到某某角色的距离,等等,凡是圆块状的积木,都属于变量。变量在程序运行时会有动态变化的取值,通过这些圆块积木,我们就能获取它的取值,并传递给用到它们的积木中。

发表评论

电子邮件地址不会被公开。