🗺️ 游戏开发 2
第 8 关
🎲

游戏管理:随机数

Random Numbers

📍 随机位置
⏰ 随机时间

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

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

auto 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 之间随便选一个数 int x = game.randomInteger(10, 70);
🎰
?
📍

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

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

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

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

(0,0)
X →
Y ↑
⏱️

随机时间:忽快忽慢

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

// 0到4秒后再次生成 auto interval = game.randomInteger(0, 4); spawnTime = game.time + interval;

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

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

完整逻辑串起来

auto spawnTime = 0; while(true) { if(game.time > spawnTime) { // 1. 随机位置 float x = game.randomInteger(10, 70); float y = game.randomInteger(10, 60); game.spawnXY("munchkin", x, y); // 2. 随机下次时间 auto interval = game.randomInteger(0, 4); spawnTime = game.time + interval; } }
⏰ 时间到了?
⬇️ Yes
🎲 随机 X, Y
⬇️
👾 生成怪物
⬇️
🎲 随机下一次时间
🤖

复习:让怪动起来

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

auto onSpawn(auto 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)
给你一个范围内的随机数。
随机大法:
"坐标 + 随机数 = 瞬间移动"
"时间 + 随机数 = 忽快忽慢"
🎉