C++ 基础 3 第 14-18 关
🆔

C++ 类型属性与相等判断

Type Attribute & Equality Operator

.type

识别敌人是小怪兽还是食人魔

==

判断两者是否完全相等

📍

坐标复习 (Position)

第14关:边地投弹中,我们需要精确获取敌人的坐标。

pos 属性本身也是一个对象,包含 xy

while(true) { auto enemy = hero.findNearestEnemy(); if(enemy) { auto x = enemy.pos.x; // 这里的 y 需要我们手动获取 float y = enemy.pos.y; // 报告坐标,C++ 中用 + 拼接字符串和数字 hero.say(x + "," + y); } }
🎯
enemy.pos.y
⚖️

相等运算符 (Equality)

第15关:叫阵中,我们需要判断数学题。

  • = (赋值):把右边的值给左边。
  • == (比较):判断两边是否相等。
if (2 + 2 == 4) { // 条件为真 (True),执行这里 hero.say("Hey!"); } if (2 + 2 == 5) { // 条件为假 (False),跳过这里 hero.say("Wrong!"); }
A
B
🏷️

类型属性 (.type)

第16关:濒危树瘤之战中,我们要区分敌人。

每个对象都有 .type 属性,它是一个字符串

while(true) { auto enemy = hero.findNearestEnemy(); // 如果是树精,不要攻击! if (enemy.type == "burl") { hero.say("不打树精!"); } // 如果是小矮人,狠狠打! if (enemy.type == "munchkin") { hero.attack(enemy); } }
waiting...
🔀

多重判断 (Multiple Checks)

第17关:嘲弄中,我们要对不同的敌人做不同的事。

// 定义处理敌人的函数 void dealEnemy(auto enemy) { // 如果是矮人 -> 攻击 if (enemy.type == "munchkin") { hero.attack(enemy); } // 如果是斗士 -> 嘲讽 if (enemy.type == "brawler") { hero.say("来抓我呀!"); } }
注意:字符串必须用双引号 "..." 包裹。
👾 ➡️ ⚔️
🥊 ➡️ 🗣️
🌲 ➡️ 🚶
🛡️

实战:错误的类型

第18关,我们必须小心,绝对不能攻击农民!

使用嵌套 `if` (if inside if) 来确保安全。

int main() { while (true) { auto enemy = hero.findNearestEnemy(); // 第一层检查:是否存在敌人? if (enemy) { // 第二层检查:类型是否正确? if (enemy.type == "munchkin") { hero.attack(enemy); } } } return 0; }
🔒

双重保险

📜

魔法总结

  • .type
    对象的类型标签(字符串)。
    例: "munchkin", "ogre", "burl"
  • ==
    比较运算符。两边相等则为真 (True)。
    例: score == 100
  • if (条件) { ... }
    只有条件为真时,才执行大括号里的代码。
🎓