杰瑞科技汇

Scratch简易小游戏怎么学?

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

Scratch简易小游戏怎么学?-图1
(图片来源网络,侵删)

游戏目标

玩家控制一个篮子,左右移动接住从天而降的苹果,每接住一个苹果,得分加 1,如果漏掉苹果(苹果落到屏幕底部),游戏结束。


第一步:准备工作 - 添加角色和背景

  1. 打开 Scratch:在浏览器中打开 scratch.mit.edu,点击“创建”项目。

  2. 选择背景

    • 在屏幕左下角的“舞台”区域,点击“背景”选项卡。
    • 点击“从背景库中选择...”,选择一个适合的背景,蓝色天空”或者“户外”。
    • 我们给背景添加一个地面,让游戏更有感觉。
    • 点击“绘制”工具,选择一个棕色,在舞台底部画一条长长的线作为地面。
  3. 添加角色

    Scratch简易小游戏怎么学?-图2
    (图片来源网络,侵删)
    • 在屏幕左上角的“角色”区域,点击“从角色库中选择...”。
    • 添加篮子:搜索 "basket",选择一个你喜欢的篮子或盘子角色。
    • 添加苹果:再次点击“从角色库中选择...”,搜索 "apple",选择一个苹果角色。

第二步:让篮子动起来

这是玩家和游戏交互的部分。

  1. 选中篮子:在角色列表中,点击篮子角色,确保你正在为它编写代码。

  2. 编写移动代码

    • 点击“代码”选项卡。
    • 我们需要让篮子随着鼠标的左右移动而移动,这是最简单的方式。
    • 拖拽以下积木块到脚本区:
      当 [绿旗] 被点击
      将 x 坐设为 (鼠标的 x)
    • 解释:这个代码的意思是,只要绿旗被点击,篮子的水平位置就会永远跟随鼠标的水平位置。

第三步:让苹果掉下来

现在我们需要苹果从屏幕上方随机位置掉落。

  1. 选中苹果:在角色列表中,点击苹果角色。

  2. 编写掉落代码

    • 我们需要一个循环,让苹果不断重复“从顶部出现,然后向下掉落”的过程。
    • 拖拽以下积木块:
      当 [绿旗] 被点击
      重复执行 (无限)
          将 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) 秒:控制苹果下落的速度,数值越小,下落越快。

第四步:核心逻辑 - 碰撞检测与计分

这是游戏最关键的部分,判断玩家是否接住了苹果。

  1. 选中苹果:确保你还在为苹果编写代码。

  2. 添加碰撞检测

    • 在苹果的 重复执行直到 <碰到 [地面 v]?> 循环内部,我们需要增加一个判断:如果碰到篮子,就加分。
    • 拖拽 .... 积木到循环内部,并添加 碰到 [篮子 v] 的判断条件。
    • .. 部分,我们让苹果消失,然后加分。
    • 你的代码块看起来会是这样:
      当 [绿旗] 被点击
      重复执行 (无限)
          将 x 坐设为 (在 (1) 到 (480) 间随机数)
          将 y 坐设为 (180)
          重复执行直到 <碰到 [地面 v]?>
              将 y 坐增加 (-5)
              等待 (0.2) 秒
              <碰到 [篮子 v] ?> 
                  隐藏 // 让苹果消失
                  将 [得分 v] 增加 (1) // 加分
                  停止 [当前角色的其他脚本 v] // 停止这个苹果的脚本,准备重新开始
              end
          end
      end
    • 注意:这里有一个小问题,如果苹果碰到篮子,它会继续下落,直到碰到地面,我们可以用 广播 来解决这个问题,让苹果一碰到篮子就“重置”,这是更优的写法。
  3. 使用广播优化(推荐)

    • 在苹果代码中
      • 删除 <碰到 [篮子 v] ?> .. 这整块。
      • 重复执行直到 <碰到 [地面 v]?> 循环里,直接加入一个判断:
        <碰到 [篮子 v] ?> 
            广播 [接住 v] // 发送一个名为“接住”的广播消息
        end
    • 在篮子代码中
      • 选中篮子,给它添加新的代码:
        当接收到 [接住 v]
        将 [得分 v] 增加 (1)
    • 解释:当苹果碰到篮子时,它就发送一个“接住”信号,篮子接收到这个信号后,就执行“加分”操作,这样逻辑更清晰,苹果也不用隐藏了。

第五步:显示分数和游戏结束

游戏需要告诉玩家得分,并在游戏结束时给出提示。

  1. 创建变量“得分”

    • 在屏幕左上角的“变量”区域,点击“新建一个变量”。
    • 变量名填“得分”,然后点击“确定”。
    • 这个变量会自动出现在舞台上。
  2. 编写游戏结束逻辑

    • 回到苹果的代码,在 重复执行直到 <碰到 [地面 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 中创造的乐趣吧!

分享:
扫描分享到社交APP
上一篇
下一篇