C++ 基础 3 第 18-26 关
MAGIC LOG BOOK
🦉

函数的返回值

Function Return Values

📦 魔法快递
⚡ 立即返回
📨

魔法快递员:Return

返回值 (Return Value) 就是函数执行完任务后,带回来的结果。

就像你让猫头鹰去商店买冰淇淋,它飞回来时爪子里抓着冰淇淋。

// 定义一个返回 x 坐标的函数 auto getEnemyX() { auto enemy = hero.findNearestEnemy(); if (enemy) { // 将坐标打包带回 return enemy.pos.x; } return 0; }
"return 关键字就是把结果打包快递回来的动作!"
🏪
🏠
🦉
🍦
🌲

实战:树精树林 (Level 19)

在这一关,我们需要判断“是否该攻击”。

函数 shouldAttack 会告诉我们 Yes (true) 或 No (false)。

auto shouldAttack(auto target) { // 1. 如果没有目标,返回 false if (!target) { return false; } // 2. 如果是树精 (burl),返回 false if (target.type == "burl") { return false; } // 3. 其他情况,可以攻击! return true; }
提示:一旦执行 return,函数会立即结束,后面的代码都不会执行!
🛡️ 🆚 🌲

遇到树精?Return False!

📏

实战:盲距 (Level 20)

我们需要计算并返回敌人距离,告诉巫师。

// 寻找最近敌人并返回距离 auto nearestEnemyDistance() { auto enemy = hero.findNearestEnemy(); float result = 0; if (enemy) { result = hero.distanceTo(enemy); } return result; } int main() { while (true) { // 将函数带回来的结果存在变量里 auto dist = nearestEnemyDistance(); if (dist > 0) { hero.say(dist); } } return 0; }
🧙‍♂️ 🗣️ 📏
⚔️

实战:固定打击 (Level 21)

不要乱动!只有敌人在攻击范围内才出剑。

auto inAttackRange(auto enemy) { auto distance = hero.distanceTo(enemy); // 剑的攻击范围通常是 3 if (distance <= 3) { return true; } else { return false; } } int main() { while (true) { auto enemy = hero.findNearestEnemy(); // 将敌人传给函数,并获取结果 if (enemy && inAttackRange(enemy)) { hero.attack(enemy); } } }
👣 🚫

Hold Position!

💰

实战:金币猎手 (Level 22)

只捡附近的钱,太远的不要。

auto isCoinClose(auto coin) { float distance = hero.distanceTo(coin); // 如果距离小于 20 米 if (distance < 20) { return true; } return false; } int main() { while (true) { auto item = hero.findNearestItem(); if (item) { // 使用函数判断是否去捡 if (isCoinClose(item)) { hero.moveXY(item.pos.x, item.pos.y); } } } return 0; }
🪙 🏃

Less than 20m

🌪️

终极挑战:森林风暴

我们需要一个通用的函数 isCloseType,同时检查三个条件:

  1. 是否存在?
  2. 距离是否小于 15 米?
  3. 类型是否正确?
auto isCloseType(auto target, auto type) { if (target) { float dist = hero.distanceTo(target); if (dist < 15 && target.type == type) { return true; } } return false; }
🧩

多重条件封装

📜

大魔法师总结

"Return 是信使,带着结果飞回来。"
"Return 是终点,跑到这里函数就下班!"
记住:如果没写 return,函数默认返回 void (无) 或垃圾值。
🏅