🗺️ 游戏开发 2
第 8 关
🎲

游戏管理:随机数

Random Numbers

📍 随机位置
⏰ 随机时间

什么是“随机数” (Random Number)?

就像你掷骰子、抽卡牌,每次结果都可能不一样,而且你事先不知道。

num = game.randomInteger(0, 3)

这句代码的意思是:
从 0, 1, 2, 3 中随机选一个整数给我。

"这就像有一个 0~3 的四面骰子,每次丢出来的数字都不一样。"
0
1
2
3
?
!
📝

语法重点:函数调用

game.randomInteger(10, 70) 是在给游戏管理员下命令:

  • 🧑‍💼 game:对象 (Object)
  • 🛠️ randomInteger:方法 (Method)
  • 📋 (10, 70):参数 (Parameters)
    Min=10, Max=70
# 请在 10 到 70 之间随便选一个数
x = game.randomInteger(10, 70)
🎰
?
📍

随机位置:让怪物“闪现”

我们用两个骰子来决定敌人的位置:

# 1. 掷骰子决定 X (横坐标)
x = game.randomInteger(10, 70)
# 2. 掷骰子决定 Y (纵坐标)
y = game.randomInteger(10, 60)
# 3. 生成怪物
game.spawnXY("munchkin", x, y)

这样每次刷怪的位置都不一样,玩家永远猜不到下一只在哪!

(0,0)
X →
Y ↑
⏱️

随机时间:忽快忽慢

让敌人出现的节奏变幻莫测:

# 0到4秒后再次生成
interval = game.randomInteger(0, 4)

spawnTime = game.time + interval

有时怪隔 0 秒就接着来(连刷!),有时隔 4 秒才来(松一口气)。

公式:
下一次时间 = 当前时间 + 随机间隔
时间轴演示:
👾
👾
+1s
👾
+3.5s
👾
+0.5s
🔄

完整逻辑串起来

spawnTime = 0
while True:
  if game.time > spawnTime:
    # 1. 随机位置
    x = game.randomInteger(10, 70)
    y = game.randomInteger(10, 60)
    game.spawnXY("munchkin", x, y)

    # 2. 随机下次时间
    interval = game.randomInteger(0, 4)
    spawnTime = game.time + interval
⏰ 时间到了?
⬇️ Yes
🎲 随机 X, Y
⬇️
👾 生成怪物
⬇️
🎲 随机下一次时间
🤖

复习:让怪动起来

随机数只负责“生”,事件处理器负责“养”(控制行为)。

def onSpawn(event):
  while True:
    # 自动攻击逻辑...

game.setActionFor("munchkin", "spawn", onSpawn)
配合使用:
随机生成位置 + 自动攻击 AI = 完美的游戏体验!
🎲出生
➡️
🧠行动
📊

数学小知识:概率

game.randomInteger(0, 3)

可能的结果:0, 1, 2, 3

这就像一个只有 4 个面的骰子,每一面朝上的机会是一样大的(公平的)。

在地图上,这就意味着怪物出现在任何一个格子的机会都差不多,这就是“均匀随机”

0
1
2
3
机会均等 (≈25%)
🎓

随机数口诀

掷骰子:
randomInteger(min, max)
给你一个范围内的随机数。
随机大法:
"坐标 + 随机数 = 瞬间移动"
"时间 + 随机数 = 忽快忽慢"
🎉