🖥️ 计算机科学 2
第 43-48 关
🍕

多参数函数

Multi-parameter Functions

🔢 坐标控制 (x, y)
🛠️ 灵活定制

本节课关卡

扣哒世界 · 计算机科学2 · C++ · 第43–48关

C++ · 本节课关卡

43 · 返回荆棘农场

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

44 · Agrippa 重构

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

45 · 封闭的十字路口

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

46 · 贪婪陷阱

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

47 · 概念挑战. 最后的大炮

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

48 · 组合挑战. 函数巡逻

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

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

👩‍🍳

什么是多参数函数?

想象你是一个高级魔法厨师,现在要制作一个定制披萨。

如果只有一个参数(比如大小),太单调了!
为了做出独一无二的美味,我们需要同时控制:
📏 尺寸 + 🍄 配料 + 🍅 酱料

"多参数函数就像做披萨:同时调整多个配方,创造出千变万化的效果!"
🍄
🍄
🍄
📏

参数顺序很重要!

在多参数函数中,参数的顺序决定了它们的含义。

C++ 使用逗号 , 来分隔多个参数。

// 定义:接受两个参数 x 和 y auto checkPoint(auto x, auto y) { hero.moveXY(x, y); } int main() { // 调用:必须按顺序传入 x 和 y checkPoint(10, 30); return 0; }
口诀:"多参数像排队,先来后到要记牢!
定义时什么顺序,调用时同样顺序!"
(x, y)
⬇️
(10, 30)
x=10, y=30
(30, 10) ❌
x=30, y=10 (位置错了!)
🗺️

第43关 · 返回荆棘农场

任务: 定义一个函数,接受 x 和 y 坐标。如果那里有敌人,就造陷阱。

auto maybeBuildTrap(auto x, auto y) { // 1. 移动到指定坐标 hero.moveXY(x, y); auto enemy = hero.findNearestEnemy(); if (enemy) { // 2. 使用参数 x, y 造陷阱 hero.buildXY("fire-trap", x, y); } } int main() { while(true) { maybeBuildTrap(43, 50); // 上方 maybeBuildTrap(25, 34); // 左方 maybeBuildTrap(43, 20); // 下方 } return 0; }
(0,0)
🚧

第45关 · 封闭的十字路口

任务: 参数不仅可以是数字,还可以是字符串!我们需要传入建筑类型。

auto maybeBuild(auto type, auto x, auto y) { hero.moveXY(x, y); auto enemy = hero.findNearestEnemy(); if (enemy) { // 使用 type 参数建造 hero.buildXY(type, x, y); } } int main() { while(true) { // 传入 "fire-trap" 或 "fence" maybeBuild("fire-trap", 40, 20); maybeBuild("fence", 26, 34); } return 0; }
🏗️

buildXY(type, x, y)

⬇️

buildXY("fence", 26, 34)

👮‍♂️

第48关 · 组合挑战. 函数巡逻

综合练习: 使用一个函数 patrol(x, y) 来管理所有的巡逻点。

auto patrol(auto x, auto y) { hero.moveXY(x, y); auto enemy = hero.findNearestEnemy(); if (enemy) { hero.attack(enemy); } } int main() { while (true) { patrol(18, 34); patrol(40, 46); patrol(62, 34); patrol(40, 22); } return 0; }
🏗️

代码复用 (Code Reuse)

❌ 没有多参数:
你需要写 moveLeft(), moveRight(), moveTop()...
每个位置都要写一个新函数,代码冗余!
✅ 使用多参数:
只写一个 moveTo(x, y)。
就像用通用的砖块(函数)和不同的设计图(参数)建造各种建筑!
🧱 + 📐 = 🏰

砖块 + 图纸 = 城堡

🎓

大魔法师结业

"多参数像排队,
先来后到要记牢!"

"定义时什么顺序,
调用时同样顺序!"

🏆

我的知识宝藏 · 一页复习

扣哒世界 · 计算机科学2 · C++ · 第43–48关

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

什么是多参数函数?

想象你是一个高级魔法厨师,现在要制作一个定制披萨。

参数顺序很重要!

在多参数函数中,参数的顺序决定了它们的含义。

hero.moveXY(x, y);

第43关 · 返回荆棘农场

任务: 定义一个函数,接受 x 和 y 坐标。如果那里有敌人,就造陷阱。

hero.moveXY(x, y);

第45关 · 封闭的十字路口

任务: 参数不仅可以是数字,还可以是字符串!我们需要传入建筑类型。

hero.moveXY(x, y);

第48关 · 组合挑战. 函数巡逻

综合练习: 使用一个函数 patrol(x, y) 来管理所有的巡逻点。

hero.moveXY(x, y);

代码复用

砖块 + 图纸 = 城堡

本节课关卡:43. 返回荆棘农场;44. Agrippa 重构;45. 封闭的十字路口;46. 贪婪陷阱;47. 概念挑战. 最后的大炮;48. 组合挑战. 函数巡逻