24 · 脆弱的士气
先读关卡目标,观察地图,再运用本课知识。
本节课任务:
在一群敌人中,找出那个“最特别”的!
(最强的 💪 或 最弱的 🤏)
扣哒世界 · 计算机科学4 · C++ · 第24–25关
先读关卡目标,观察地图,再运用本课知识。
先读关卡目标,观察地图,再运用本课知识。
学习路线:读目标 → 看图解 → 写代码 → 运行检查
一排排好队的东西(敌人、硬币)。
一个数字变量,像手指一样,从 0 指到最后一个。
“从头到尾,一个一个看过去。”
int enemyIndex = 0; while (enemyIndex < enemies.size()) { auto enemy = enemies[enemyIndex]; // 👉 这里对 enemy 做事情 enemyIndex += 1; }
auto findStrongestEnemy(auto enemies) { auto strongest = null; auto maxHealth = 0; // 🐣 初始值设为很小 int index = 0; while (index < enemies.size()) { auto enemy = enemies[index]; // 💪 谁更强?比一比! if (enemy.health > maxHealth) { strongest = enemy; maxHealth = enemy.health; } index += 1; } return strongest; }
关键点:
> 大于号:找更大的。maxHealth = 0:初始门槛很低,谁都能上来。auto weakest = null; auto minHealth = 99999; // 🏔️ 初始值设为很大 int index = 0; while (index < enemies.size()) { auto enemy = enemies[index]; // 🤏 谁更弱?比一比! if (enemy.health < minHealth) { weakest = enemy; minHealth = enemy.health; } index += 1; } if (weakest) { hero.attack(weakest); }
关键点:
< 小于号:找更小的。minHealth = 99999:门槛很高,很容易被“更小”的取代。结构都是一样的,只有两个地方不同!
初始值:
很小 (0)
比较符号:
>
if val > best:
初始值:
很大 (99999)
比较符号:
<
if val < best:
扣哒世界 · 计算机科学4 · C++ · 第24–25关
一排排好队的东西(敌人、硬币)。
enemyIndex += 1;
初始化: 假装目前看到的最大生命值是 0。
> 大于号:找更大的。
index += 1;
初始化: 假装目前记录的生命值是 99999 (无穷大)。
< 小于号:找更小的。
index += 1;
结构都是一样的,只有两个地方不同!
本节课关卡:24. 脆弱的士气;25. 疯狂Maxer 反击