为什么用 Scratch 教数学:写游戏比刷题更上瘾

孩子做口算题会嫌烦,但如果让他自己写一个出题游戏、让电脑出 20 道题、答对加分答错扣血,他会主动玩半小时。这就是从"被做题"变成"出题给别人做"的角色反转带来的内驱力。

Scratch 做数学游戏还有一个隐藏好处:孩子在写游戏的过程中,必须真的搞懂加法、乘法、比较大小、随机数这些概念。他写"答对加 10 分"的时候,脑子里要想清楚什么叫"答对"、什么时候加分、加多少。这种为了让游戏跑通而主动理解数学的过程,比刷十页练习册都深刻。

最好的数学教育,不是让孩子刷题,而是让他亲手把数学规则写成游戏。
本文核心知识点
  • 变量Scratch 里的"分数""血量""当前关卡"都是变量。
  • 随机数从 1 到 100 随机取一个数,作为题目的因数。
  • 条件判断如果玩家答案等于正确答案,就加分。
  • 侦测积木检测角色有没有碰到迷宫墙,决定能不能移动。
Scratch 数学与逻辑游戏设计配图:蓝色渐变背景上彩色拼图块拼成迷宫路径,尽头一把发光钥匙和小宝箱,旁边漂浮骰子、天平、几何图形和一只卡通小猫踩在方块平台上
把数学题变成拼图迷宫,孩子在闯关的过程中就把运算练熟了。

数学闯关游戏:随机出题与计分判定

我们来做一个"数学大冒险"游戏:角色是一个小猫,舞台上方显示一道加法题,玩家按数字键回答,答对加分、答错扣血。

第一步,建立两个变量:分数和血量。在 Scratch 的"变量"分类里点"建立变量",输入名字,舞台左上角就会出现这两个数字的显示框。

第二步,建立两个新变量:甲和乙,分别代表题目里的两个加数。我们让它们每次都随机变成 1 到 100 之间的数:

当绿旗被点击
将分数设为 0
将血量设为 3
重复执行
  将 甲 设为 随机从 1 到 100
  将 乙 设为 随机从 1 到 100
  说 甲 + 乙 = ? 两秒
  等待回答
  如果 回答 = 甲 + 乙 那么
    将分数增加 10
  否则
    将血量减少 1
    如果 血量 = 0 那么
      停止全部脚本

这段脚本就是一个完整的出题循环。孩子写完之后会发现:原来"说甲+乙=?"里的甲和乙是变量,每次都不一样,电脑自动出题。这里用到了运算积木里的加法和比较,和数学课上学的符号一一对应。

变量与运算:让题目自动生成

上一节我们已经用到了变量。变量在 Scratch 里就是一个"贴了标签的盒子",你可以往里面放数字,也可以随时改它。舞台上显示的分数和血量,就是两个盒子里当前的数字。

运算积木在绿色分类里,包含加减乘除、比较大小、与或非逻辑运算。做数学游戏时最常用的是:

运算积木用途示例
加法算正确答案甲 + 乙
乘法做乘法闯关甲 × 乙
大于判断难度等级分数 > 100
随机数随机出题随机从 1 到 100
取余数判断奇偶数字 mod 2 = 0

孩子可以自己扩展:把加法改成乘法、把题目范围改成 1 到 1000、把分数加到一定数量就升级难度。每改一次,游戏就会变一个样子,这种参数化思维是从积木编程过渡到代码编程的关键一步。

条件分支:答对进下一关,答错扣血重来

上一节的游戏只有一种难度。我们再加一个"关卡"变量:分数每到 50 分,关卡加 1,题目范围变大。

如果 分数 = 50 那么
  将关卡增加 1
 说 "进入第" + 关卡 + "关" 两秒

当绿旗被点击
将关卡设为 1
重复执行
  如果 关卡 = 1 那么
    将 甲 设为 随机从 1 到 10
    将 乙 设为 随机从 1 到 10
  否则如果 关卡 = 2 那么
    将 甲 设为 随机从 1 到 50
    将 乙 设为 随机从 1 到 50

这里出现了多分支条件:如果关卡是 1 就出 10 以内的题,关卡是 2 就出 50 以内的题。这其实就是程序设计里的"分支结构",和成年程序员写的 if-else 是完全一样的逻辑。

孩子在写这个逻辑的时候,会自然地理解"什么叫条件""条件满足时做什么""条件不满足时做什么"。这些概念在数学课上是抽象的,在游戏里是具体的。

迷宫寻路:用侦测积木写碰撞检测

除了数学题,Scratch 还能做经典的迷宫寻路游戏。孩子要控制一个小球从迷宫起点走到终点,碰到墙就弹回去。这个游戏的核心是碰撞检测。

先在舞台背景上画一个迷宫,墙用黑色。然后给小球写脚本:

当绿旗被点击
重复执行
  如果 按下上箭头 那么 改变 y 坐标 5
  如果 按下下箭头 那么 改变 y 坐标 -5
  如果 按下右箭头 那么 改变 x 坐标 5
  如果 按下左箭头 那么 改变 x 坐标 -5

  如果 碰到颜色 黑色 那么
    移动 -10 步
    说 "撞墙了!" 1 秒

"碰到颜色黑色"就是侦测积木,它会检测小球当前所在位置下面有没有黑色像素。一旦碰到墙,就把小球往后退 10 步,等于把它"弹"回安全位置。

这种碰撞检测是所有动作游戏的基础。孩子理解了这个逻辑,以后做平台跳跃游戏、赛车游戏、打飞机游戏都能复用同一套思路。

本节用到的核心结构
  • 键盘事件用方向键控制角色移动。
  • 坐标系统舞台有 x 和 y 坐标,角色位置由坐标决定。
  • 侦测检测颜色碰撞,决定角色能不能进入某个区域。
  • 回退动作撞墙后反向移动,把角色拉回安全位置。