角色移动、随机生成、碰撞检测、计分和游戏结束,学会它,你就能举一反三,制作出很多类似的小游戏!

游戏目标
玩家控制一个篮子,左右移动接住从天而降的苹果,每接住一个苹果,得分加 1,如果漏掉苹果(苹果落到屏幕底部),游戏结束。
第一步:准备工作 - 添加角色和背景
-
打开 Scratch:在浏览器中打开 scratch.mit.edu,点击“创建”项目。
-
选择背景:
- 在屏幕左下角的“舞台”区域,点击“背景”选项卡。
- 点击“从背景库中选择...”,选择一个适合的背景,蓝色天空”或者“户外”。
- 我们给背景添加一个地面,让游戏更有感觉。
- 点击“绘制”工具,选择一个棕色,在舞台底部画一条长长的线作为地面。
-
添加角色:
(图片来源网络,侵删)- 在屏幕左上角的“角色”区域,点击“从角色库中选择...”。
- 添加篮子:搜索 "basket",选择一个你喜欢的篮子或盘子角色。
- 添加苹果:再次点击“从角色库中选择...”,搜索 "apple",选择一个苹果角色。
第二步:让篮子动起来
这是玩家和游戏交互的部分。
-
选中篮子:在角色列表中,点击篮子角色,确保你正在为它编写代码。
-
编写移动代码:
- 点击“代码”选项卡。
- 我们需要让篮子随着鼠标的左右移动而移动,这是最简单的方式。
- 拖拽以下积木块到脚本区:
当 [绿旗] 被点击 将 x 坐设为 (鼠标的 x)
- 解释:这个代码的意思是,只要绿旗被点击,篮子的水平位置就会永远跟随鼠标的水平位置。
第三步:让苹果掉下来
现在我们需要苹果从屏幕上方随机位置掉落。
-
选中苹果:在角色列表中,点击苹果角色。
-
编写掉落代码:
- 我们需要一个循环,让苹果不断重复“从顶部出现,然后向下掉落”的过程。
- 拖拽以下积木块:
当 [绿旗] 被点击 重复执行 (无限) 将 x 坐设为 (在 (1) 到 (480) 间随机数) 将 y 坐设为 (180) 重复执行直到 <碰到 [地面 v]?> 将 y 坐增加 (-5) 等待 (0.2) 秒 end end - 代码解释:
重复执行 (无限):这是一个主循环,让苹果掉落的过程可以不断重复。将 x 坐设为 (在 (1) 到 (480) 间随机数):每次循环开始时,苹果会出现在屏幕顶部一个随机的水平位置(舞台宽度大约是480像素)。将 y 坐设为 (180):将苹果的垂直位置设置在屏幕顶部。重复执行直到 <碰到 [地面 v]?>:这是一个小循环,只要苹果没有碰到地面,就不断执行下面的代码。将 y 坐增加 (-5):让苹果的 y 坐标变小,从而向下移动(在 Scratch 中,屏幕上方是 y 坐标小的值,下方是大的值)。等待 (0.2) 秒:控制苹果下落的速度,数值越小,下落越快。
第四步:核心逻辑 - 碰撞检测与计分
这是游戏最关键的部分,判断玩家是否接住了苹果。
-
选中苹果:确保你还在为苹果编写代码。
-
添加碰撞检测:
- 在苹果的
重复执行直到 <碰到 [地面 v]?>循环内部,我们需要增加一个判断:如果碰到篮子,就加分。 - 拖拽
....积木到循环内部,并添加碰到 [篮子 v]的判断条件。 - 在
..部分,我们让苹果消失,然后加分。 - 你的代码块看起来会是这样:
当 [绿旗] 被点击 重复执行 (无限) 将 x 坐设为 (在 (1) 到 (480) 间随机数) 将 y 坐设为 (180) 重复执行直到 <碰到 [地面 v]?> 将 y 坐增加 (-5) 等待 (0.2) 秒 <碰到 [篮子 v] ?> 隐藏 // 让苹果消失 将 [得分 v] 增加 (1) // 加分 停止 [当前角色的其他脚本 v] // 停止这个苹果的脚本,准备重新开始 end end end - 注意:这里有一个小问题,如果苹果碰到篮子,它会继续下落,直到碰到地面,我们可以用
广播来解决这个问题,让苹果一碰到篮子就“重置”,这是更优的写法。
- 在苹果的
-
使用广播优化(推荐):
- 在苹果代码中:
- 删除
<碰到 [篮子 v] ?> ..这整块。 - 在
重复执行直到 <碰到 [地面 v]?>循环里,直接加入一个判断:<碰到 [篮子 v] ?> 广播 [接住 v] // 发送一个名为“接住”的广播消息 end
- 删除
- 在篮子代码中:
- 选中篮子,给它添加新的代码:
当接收到 [接住 v] 将 [得分 v] 增加 (1)
- 选中篮子,给它添加新的代码:
- 解释:当苹果碰到篮子时,它就发送一个“接住”信号,篮子接收到这个信号后,就执行“加分”操作,这样逻辑更清晰,苹果也不用隐藏了。
- 在苹果代码中:
第五步:显示分数和游戏结束
游戏需要告诉玩家得分,并在游戏结束时给出提示。
-
创建变量“得分”:
- 在屏幕左上角的“变量”区域,点击“新建一个变量”。
- 变量名填“得分”,然后点击“确定”。
- 这个变量会自动出现在舞台上。
-
编写游戏结束逻辑:
- 回到苹果的代码,在
重复执行直到 <碰到 [地面 v]?>循环的最后,添加一个判断:如果苹果掉到地面(没有接到),游戏就结束。 - 修改苹果的代码:
当 [绿旗] 被点击 重复执行 (无限) 将 x 坐设为 (在 (1) 到 (480) 间随机数) 将 y 坐设为 (180) 重复执行直到 <碰到 [地面 v]?> 将 y 坐增加 (-5) 等待 (0.2) 秒 <碰到 [篮子 v] ?> 广播 [接住 v] end end // 在这里添加游戏结束的判断 <不碰到 [篮子 v] ?> // 注意:这里的意思是,如果掉到地面了 广播 [游戏结束 v] end end - 在舞台的代码中:
- 点击舞台,给它添加代码来处理“游戏结束”广播。
- 拖拽以下积木:
当接收到 [游戏结束 v] 停止 [全部 v] // 停止所有角色的脚本,游戏结束 说 (游戏结束!你的得分是:(得分)) // 显示最终得分
- 优化:为了让游戏可以重新开始,我们可以在舞台的代码最前面加一个“重置”。
当 [绿旗] 被点击 将 [得分 v] 设为 (0) // 重置分数 隐藏 // 隐藏“游戏结束”的文字 广播 [开始游戏 v] // 可以给其他角色也添加“开始游戏”的广播,让它们准备好
- 回到苹果的代码,在
第六步:测试与优化
恭喜!你的游戏基本完成了!现在点击绿旗,测试一下。
-
测试要点:
- 篮子是否能跟随鼠标移动?
- 苹果是否从随机位置掉落?
- 接住苹果时,分数是否会增加?
- 漏掉苹果时,游戏是否会结束并显示得分?
-
可以进行的优化(进阶):
- 增加难度:随着得分增加,让苹果下落速度变快,你可以用
<(得分) > (10) ?> ..这样的判断来实现。 - 添加音效:在“接住”和“游戏结束”的地方,添加播放声音的积木,让游戏更有趣。
- 改变角色:你可以把篮子换成小恐龙,苹果换成陨石,做成一个“躲避陨石”的游戏!
- 增加难度:随着得分增加,让苹果下落速度变快,你可以用
完整代码参考
舞台代码:
当 [绿旗] 被点击
将 [得分 v] 设为 (0)
隐藏
重复执行 (无限)
广播 [开始游戏 v]
end
当接收到 [游戏结束 v]
停止 [全部 v]
说 (游戏结束!你的得分是:(得分)) (2) 秒
篮子代码:
当 [绿旗] 被点击 将 x 坐设为 (鼠标的 x) 当接收到 [接住 v] 将 [得分 v] 增加 (1)
苹果代码:
当 [绿旗] 被点击
重复执行 (无限)
将 x 坐设为 (在 (1) 到 (480) 间随机数)
将 y 坐设为 (180)
重复执行直到 <碰到 [地面 v]?>
将 y 坐增加 (-5)
等待 (0.2) 秒
<碰到 [篮子 v] ?>
广播 [接住 v]
end
end
<不碰到 [篮子 v] ?>
广播 [游戏结束 v]
end
end
希望这个教程对你有帮助!享受在 Scratch 中创造的乐趣吧!
