疯狂打地鼠!——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(代表时间到了)时,青蛙会立刻执行隐藏,绝不会在游戏结算画面中继续乱蹦。
🌟 今天我们学会了什么?
通过拆解这些角色,大家体会到编程的魅力了吗?
多线程的时间同步: 舞台、锤子、青蛙都有一个神同步的“等待 5 秒”指令。这种默契让各司其职的角色完美衔接。
双重条件判断: 我们学会了嵌套使用“如果...那么”,明白了在游戏中,“碰到目标”和“做出攻击动作”必须同时发生才能产生有效交互。
全局广播: 第一次认识到了“广播”的威力,它是让不同角色之间互相通信、统一步调的最佳手段。




