疯狂打地鼠!——Scratch 经典小游戏代码大揭秘

同学们,今天我们完成了一个非常考验反应能力和手速的小游戏:“打地鼠”(今天的主角是一只调皮的青蛙!)。

在这个庞大的项目中,我们不仅使用了变量随机数,还首次接触了非常重要的高级概念:计时器消息广播以及多重条件侦测。为了让大家清晰地理解这套复杂的系统是如何运转的,我们将整个游戏拆解成了四个核心“角色”,一起来看看它们的内部代码是怎么写的吧!

🌵 角色一:讲解员(仙人掌的右手)—— 营造完美的开场

一个完整的游戏,怎么能少得了规则介绍?这个角色承担了游戏的“新手教程”工作。

  • 核心功能: 介绍规则并控制开场节奏。

  • 代码解析: 当绿旗被点击时,它会按顺序说出五句话:“Hello!我是仙人掌的右手,” “今天我们来玩的游戏是” “打地鼠” “你需要用锤子打它” “在1分钟内,需得到500分,否则即为失败!”。 重点来了: 每一句话都刚好停留 1 秒,加起来总共耗时 5 秒钟。这不仅是给玩家看规则的时间,更是给程序中其他角色设定的“倒计时准备时间”。

🎬 角色二:舞台 (Stage) —— 铁面无私的裁判

舞台虽然不会动,但它是整个游戏的总指挥,控制着比赛的开始与结束。

  • 核心功能: 环境初始化、倒计时监控与胜负裁决。

  • 代码解析:

    • 准备阶段: 绿旗点亮后,舞台换上沙漠(desert)背景,然后等待 5 秒(正好等讲解员说完话),接着将系统内置的 计时器 归零,比赛正式打响!

    • 结算系统: 舞台会不断循环检查时间。当 计时器 = 180(即经过了3分钟)时,裁判开始介入。它会立刻检查玩家的战绩:如果 得分 < 100,说明没有达标,换成失败的背景;否则,换成胜利的背景。

    • 全场广播: 裁决出胜负后,舞台会向全场发送一个广播 [消息1],随后冷酷地执行 停止全部脚本,宣布游戏彻底结束。

🔨 角色三:锤子 (角色2) —— 你的专属武器

既然是打地鼠,玩家手里必须得有家伙。我们用代码赋予了这把锤子“灵魂”。

  • 核心功能: 鼠标追踪与敲击动画。

  • 代码解析:

    • 开局同样乖乖等待 5 秒

    • 追踪系统: 在重复执行中,将自己的位置永远设为 鼠标的x坐标鼠标的y坐标。这样锤子就如同长在了鼠标上一样顺滑。

    • 动画系统: 当侦测到 按下鼠标? 时,锤子立刻换成“砸下”的造型(造型2),极短地等待 0.1 秒后,再换回“举起”的造型(造型1)。这 0.1 秒的延迟,完美还原了用力砸击的视觉顿挫感。

🐸 角色四:青蛙 (Frog) —— 神出鬼没的猎物

青蛙的代码是全场最精妙的,它身上足足背负了三套独立运行的脚本指令:

  • 代码解析:

    • 作息规律: 绿旗点击后,它先隐藏自己,顺手把计分板的 得分 设为 0,然后等待 5 秒。比赛开始后,它利用两个随机数玩起了捉迷藏:在 1 到 7 秒之间随机等待一会儿后探出头(显示),再停留 1 到 5 秒之间的随机时间后光速逃跑(隐藏)。

    • 精准挨打(核心碰撞): 青蛙无时无刻不在紧盯玩家的动作。必须同时满足两个严苛的条件——如果 <碰到 角色2(锤子) ?> 并且内部嵌套了 如果 <按下鼠标?>,它才会承认自己被打中了。此时,得分增加 1,并且它会立刻隐藏躲避。

    • 听从指挥: 当接收到舞台发出的 消息1(代表时间到了)时,青蛙会立刻执行隐藏,绝不会在游戏结算画面中继续乱蹦。

🌟 今天我们学会了什么?

通过拆解这些角色,大家体会到编程的魅力了吗?

  1. 多线程的时间同步: 舞台、锤子、青蛙都有一个神同步的“等待 5 秒”指令。这种默契让各司其职的角色完美衔接。

  2. 双重条件判断: 我们学会了嵌套使用“如果...那么”,明白了在游戏中,“碰到目标”和“做出攻击动作”必须同时发生才能产生有效交互。

  3. 全局广播: 第一次认识到了“广播”的威力,它是让不同角色之间互相通信、统一步调的最佳手段。