GAME DEV 2 SCORE ATTACK 第 22 关
🏆

分数 (Score)

打造你的计分系统

+ 加分
- 扣分

本节课关卡

扣哒世界 · 游戏开发2 · C++ · 第22关

C++ · 本节课关卡

22 · 硬币游戏第2步:分数

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

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

📟

记分牌变量:game.score

game.score 就是游戏里的记分牌。

一开始,我们要在上面写一个数字(初始化)。

// 1. 初始化分数 (赋值) game.score = 1000; // 2. 在屏幕上显示 ui.track(game, "score");
"UI 小帮手,帮我把这个分数挂在屏幕上!"
SCORE
1000
💰

捡东西加分:onCollect

当触发 collect 事件时,我们要判断捡到了什么。

auto onCollect(auto event) { auto item = event.other; // 捡到铜币 if (item.type == "bronze-coin") { game.score += 1; } // 捡到蘑菇 if (item.type == "mushroom") { game.score += 5; } }
1000
¢
🍄
点击物品加分
➕

自增运算符 +=

这是程序员的偷懒写法:

score += 5

⬇️ 等价于 ⬇️

score = score + 5
"在原来的分数基础上,再加 5 分!"
+=
⏳

与时间赛跑:扣分逻辑

为了让游戏更刺激,分数会随时间流逝而减少。

auto checkTimeScore() { // 每一帧减去 0.5 分 game.score -= 0.5; } int main() { while(true) { checkTimeScore(); } return 0; }

-=:自减运算符。每过一小会儿,就扣掉一点点。

1000
分数正在流失...
🛑

底线:不能变成负数

如果一直扣分,变成 -100 分就太难看了。

if (game.score < 0) { // 拉回 0 分 game.score = 0; }
"就像地板:不管你怎么掉,最低只能掉到地板上,不会掉进地下室。"
Score = 0
📉
🎨

设计视角:为什么这样?

这一关把几个好点子结合了起来:

  • 🚀 高起始分 (1000):
    一开始就给你很多分,让你不想失去它。
  • ⏳ 时间惩罚 (-0.5):
    逼迫玩家跑快点,制造紧张感。
  • 🎁 正向反馈 (+1 / +5):
    捡到东西立马奖励,鼓励探索。
⚖️

平衡游戏性

🏅

记分员口诀

"先给记分牌写个 1000,
捡到宝物 += 加分。"
"时间滴答 -= 扣分,
掉到 0 分就停稳!"
🌟

我的知识宝藏 · 一页复习

扣哒世界 · 游戏开发2 · C++ · 第22关

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

记分牌变量:game.score

game.score 就是游戏里的记分牌。

game.score = 1000;

捡东西加分:onCollect

当触发 collect 事件时,我们要判断捡到了什么。

game.score += 1;

自增运算符 +=

这是程序员的偷懒写法:

与时间赛跑:扣分逻辑

为了让游戏更刺激,分数会随时间流逝而减少。

game.score -= 0.5;

底线:不能变成负数

如果一直扣分,变成 -100 分就太难看了。

game.score = 0;

设计视角:为什么这样?

这一关把几个好点子结合了起来:

本节课关卡:22. 硬币游戏第2步:分数