🛡️⚔️

C++ 语法大冒险

CodeCombat 第6-13关:if 语句与循环

if (判断)
while (循环)
{ } (大括号)
🤔

什么是 if 语句?

01/08

if (如果) 是代码中的大脑思考官。它帮助英雄做决定。

就像在现实生活中:

  • 如果 下雨,就带伞。
  • 🍦 如果 看到冰淇淋,就吃掉!
  • ⚔️ 如果 (if) 看到敌人 (enemy),就攻击 (attack)!
// C++ 语法结构 if (条件) { // 如果条件成立,做这里的事 执行动作(); }
🧠
"Should I attack?"
📏

C++ 核心规则:括号与分号

02/08

在 Python 中我们用缩进,但在 C++ 中,我们有两条铁律:

1. 小括号 ( ) if 后面的条件必须包在小括号里。
2. 大括号 { } 要执行的代码块必须包在大括号里。
3. 分号 ; 每句命令结束必须加分号!
if (enemy) { hero.attack(enemy); hero.attack(enemy); }
👆 黄色是条件,绿色是范围,红色是结束符
⚔️

打敌人三件套 (The Trilogy)

03/08

在第6-13关中,我们必须遵守这个逻辑,否则会出错:

// 1. 找:寻找最近的敌人 auto enemy = hero.findNearestEnemy(); // 2. 判:检查 enemy 变量是否为空 if (enemy) { // 3. 打:只有存在才攻击! hero.attack(enemy); hero.attack(enemy); }
为什么?
如果 enemy 不存在(空的),直接攻击会让程序报错,或者英雄会发呆!
👹
有敌人
(True)
👻
没敌人
(False/Null)
if (enemy) 就是在检查盒子里有没有东西
🌲

实战:林地小屋 (Level 6)

04/08

在这一关,我们需要移动到指定位置,然后检查那里是否有敌人。

C++ 特性: 我们使用 auto 关键字来让电脑自动推断 enemy 是什么类型,这样写起来更简单!

int main() { hero.moveXY(19, 33); auto enemy = hero.findNearestEnemy(); // if语句会检查变量有没有食人魔 if (enemy) { hero.attack(enemy); hero.attack(enemy); } hero.moveXY(49, 51); enemy = hero.findNearestEnemy(); if (enemy) { hero.attack(enemy); hero.attack(enemy); } return 0; }
🏡
🔄

无限循环:while(true)

05/08

我们要像保安一样,永远不停地寻找敌人。

使用 while(true) { ... } 来创建一个永远执行的循环。

int main() { // 永远执行大括号里的代码 while (true) { auto enemy = hero.findNearestEnemy(); if (enemy) { hero.attack(enemy); } } return 0; }
👮
🔥

进阶:条件建造 (Level 11)

06/08

if 语句不光能用来攻击,还能用来建造!

逻辑:如果看到敌人,在那个位置造一个火焰陷阱。

int main() { while (true) { // 1. 去上路检查 hero.moveXY(43, 50); auto top = hero.findNearestEnemy(); // 2. 如果有敌人,造陷阱! if (top) { hero.buildXY("fire-trap", 43, 50); } // ... 左路和下路同理 ... } return 0; }
💣
Only build if needed!
🎓

终极挑战:中点 (Level 13)

07/08

这一关结合了所有知识点:坐标移动、循环、if判断、建造。

通关口诀:
"Move (移动) -> Find (找) -> Check (判) -> Build (造)"
while (true) { hero.moveXY(32, 52); auto topEnemy = hero.findNearestEnemy(); if (topEnemy) { hero.buildXY("fire-trap", 35, 52); } // ... 继续巡逻其他点 ... }

CONGRATULATIONS!

🏆

你已经掌握了 C++ 的基础逻辑!