GAME_DEV_3.py
🎮

游戏开发 3:终极指南

Game Development 3

🔴 核心逻辑 (Logic)
🔵 数据管理 (Data)
🟡 物理与空间 (Physics)
🟢 游戏设计 (Design)

本节课关卡 · 1/2

扣哒世界 · 游戏开发3 · Python · 第1–11关

Python · 本节课关卡

01 · 方形规则

先读关卡目标,观察地图,再运用本课知识。

02 · 大家伙

先读关卡目标,观察地图,再运用本课知识。

03 · 量子跃迁

先读关卡目标,观察地图,再运用本课知识。

04 · 循环森林

先读关卡目标,观察地图,再运用本课知识。

05 · 平稳移动

先读关卡目标,观察地图,再运用本课知识。

06 · 发狂的宝石

先读关卡目标,观察地图,再运用本课知识。

07 · 跑酷第1步:环境

先读关卡目标,观察地图,再运用本课知识。

08 · 跑酷步骤2:得分

先读关卡目标,观察地图,再运用本课知识。

09 · 跑酷步骤3:敌人

先读关卡目标,观察地图,再运用本课知识。

学习路线:读目标 → 看图解 → 写代码 → 运行检查

本节课关卡 · 2/2

扣哒世界 · 游戏开发3 · Python · 第1–11关

Python · 本节课关卡

10 · 跑酷步骤4:平衡

先读关卡目标,观察地图,再运用本课知识。

11 · 游戏开发3最终的项目

先读关卡目标,观察地图,再运用本课知识。

学习路线:读目标 → 看图解 → 写代码 → 运行检查

🔔

1. 事件驱动编程

Logic
事件 (Event):门铃响了。
处理器 (Handler):跑去开门。

程序不是从头跑到尾,而是“等待事情发生”。

def onUpdate(event):
  # 每一帧都会运行的代码
  checkEnemies()
📜

2. 函数 (Functions)

Logic

函数就像厨房里的食谱!写好步骤,下次直接用。

def shouldAttack(who, target):
  if who.type == "scout":
    return True
Def: 定义新技能。
Return: 给出答案。
📝 ➡️ 🍳
🔀

3. 条件语句 (If/Else)

Logic

程序做决定的时刻。

if rain:
  takeUmbrella()
elif cloudy:
  takeCoat()
else:
  goPlay()
逻辑运算符:
and (且), or (或), not (非)
🤔 ➡️ 🌂 / 🧢
🔄

4. 循环 (Loops)

Logic

重复做同一件事。

while spawnNum > 0:
  spawnEnemy()
  spawnNum -= 1
while: 只要条件满足就一直做。
for: 对每个东西做一遍。
🔁
📦

5. 变量与数据类型

Data

变量是贴了标签的储物箱。

  • 🔢 数字: 5, 3.14
  • 🔤 字符串: "hello"
  • 🔘 布尔值: True, False
damage = 20
scale *= 1.2
📦 = 🍎
box = "apple"
🤠

6. 对象与属性

Data

对象 (Object):游戏里的角色。

unit.pos.x = 40
player.maxSpeed = 20
属性:特征 (health, pos)
方法:动作 (move(), attack())
用点号 . 来访问。
🧙‍♂️
{ hp: 100, mp: 50 }
🗺️

7. 坐标系 (Coordinates)

Phys

教室里的座位表 (X, Y)。

  • ➡️ X: 左右
  • ⬆️ Y: 上下
  • 📍 (0,0): 原点 (左下角)
unit.pos.x += 6
X:0 Y:0
🏃

8. 运动 (Movement)

Phys

让东西动起来!

dist = speed * dir
fence.pos.y += dist
速度:快慢。
方向:正负号 (+/-)。
平滑移动:每帧加一点点。
🏃
💓

9. 游戏循环 (Game Loop)

Game

游戏的心脏,每秒跳动几十次。

def onUpdateGame(event):
  checkPlayer()
  checkSpawns()
  game.score += event.deltaTime

不断更新画面、位置和分数。

💗
💥

10. 碰撞检测 (Collision)

Phys

判断两个物体是否撞上了。

def onCollide(event):
  other = event.other
  if other.type == "fence":
    unit.defeat()
💥
🎲

11. 随机数 (Random)

Game

让游戏充满惊喜(抽奖!)。

x = game.randomInteger(10, 70)
type = game.randomInteger(0, 1)
随机位置:怪物在哪出现?
随机掉落:掉金币还是药水?
?
📊

12. 状态管理

Game

游戏的记分板。

  • 🏆 Score: 得分
  • ⏱️ Time: 剩余时间
  • 🚩 Goal: 胜利目标
game.score = 0
goal = game.addManualGoal("存活20秒")
SCORE: 00950
TIME: 00:30
💾

13. 数据持久化

Data

像写日记一样把最高分记下来,关掉游戏也不会丢。

# 读取
best = db.get("topScore") or 0

# 保存
db.set("topScore", game.score)
📔
⚖️

14. 游戏平衡

Design

让游戏既有挑战性又好玩。

GAME_SPEED = 0.6
PLAYER_SPEED = 20
调参:太难了?怪物慢一点。
太简单了?时间短一点。
🎚️
🧠

15. 算法思维

Code

解决问题的步骤:

  1. 👀 Observe: 找到最近敌人。
  2. 🤔 Decide: 该打吗?(判断距离/类型)。
  3. 🏃 Act: 攻击或逃跑。
1️⃣ ➡️ 2️⃣ ➡️ 3️⃣
🐞

16. 调试 (Debugging)

Code

找错别字,修 Bug。

技巧:
1. 使用 print() 或 hero.say()。
2. 检查拼写和缩进。
3. 一步一步运行。
🛠️
♻️

17. 代码重用

Code

不要重复造轮子!

写好一个函数 spawnRandom(),在每一关里都能用。

就像乐高积木,用同样的块搭出不同的城堡。
🧱
🎉

恭喜通关!

你是真正的游戏开发者!

带着这些知识,去创造属于你的世界吧!

🌟 🚀 🎮

我的知识宝藏 · 一页复习

扣哒世界 · 游戏开发3 · Python · 第1–11关

Python · 知识点图
关键字方法 / 函数字符串数字

🔔 update 事件

注册更新处理函数;每次更新根据游戏状态推进逻辑。

🧩 函数与代码复用

把重复步骤封装为函数;定义说明怎么做,调用才开始执行。

🚦 条件、循环与算法

条件决定做什么,循环负责重复;先拆步骤,再按顺序组合。

📦 变量、对象与属性

变量保存数据,对象拥有属性;用状态记录当前阶段和变化。

📍 坐标、速度与移动

x、y 指定位置;更新速度或坐标,让单位按方向平稳移动。

💥 碰撞与分数

识别碰撞双方,根据物品或单位类型处理得分、受伤和消除。

🎲 随机数与敌人

在合适范围随机生成位置或时机,让每局挑战有变化。

💾 记录与状态管理

及时更新分数、时间和状态;需要跨局保留的记录交给数据库。

⚖️ 平衡、调试与项目

把速度、得分和生成间隔变成可调整参数;试玩验证,再逐步完善项目。

本节课关卡:1. 方形规则;2. 大家伙;3. 量子跃迁;4. 循环森林;5. 平稳移动;6. 发狂的宝石;7. 跑酷第1步:环境;8. 跑酷步骤2:得分;9. 跑酷步骤3:敌人;10. 跑酷步骤4:平衡;11. 游戏开发3最终的项目