计算机科学 3
第 9-13 关
📜

一维列表 (List / Array)

Collections of Data

🔢 0号开始
🔄 自动点名

本节课关卡

扣哒世界 · 计算机科学4 · C++ · 第9–13关

C++ · 本节课关卡

09 · 团队合作

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

10 · 协助防御

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

11 · 招募队伍

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

12 · 第二宝石

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

13 · Sarven 救世主

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

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

🎒

什么是列表 (List)?

可以把它想象成:一排排好队的椅子。

每个椅子上坐着一个人(元素),每个椅子都有一个号码(索引)。

// C++ 中通常使用 vector 来表示动态列表 auto friends = {"Joan", "Ronan", "Nikita"};

大括号 {} 或函数返回的数组表示这是一个列表。

👩‍🦰
👱‍♂️
🧒
Friends List
0️⃣

索引:从 0 开始数!

在程序世界里,第一个位置是 0,不是 1!

auto items = hero.findItems(); auto gem0 = items[0]; // 第1个 auto gem1 = items[1]; // 第2个 auto gem2 = items[2]; // 第3个
"0-based index: 就像尺子刻度从0开始。"
💎
items[0]
0
💎
items[1]
1
💎
items[2]
2
鼠标悬停查看代码
🤝

实战 I:团队合作

我们要分别指挥每个人去拿不同的宝石。

int main() { auto items = hero.findItems(); // 第1颗给 Bruno auto gem0 = items[0]; hero.say("Bruno " + gem0); // 第2颗给 Matilda hero.say("Matilda " + items[1]); // 第3颗我自己拿 auto gem2 = items[2]; hero.moveXY(gem2.pos.x, gem2.pos.y); return 0; }
💎 💎 💎
👇 👇 👇
👱‍♂️ 👩‍🦰 🤠
📏

列表长度:size()

想知道队伍里有几个人?用 .size() 方法。

auto enemies = hero.findEnemies(); // 安全检查:确保有人再打 if (enemies.size() > 0) { auto first = enemies[0]; hero.attack(first); }

安全检查:只有当长度 > 0 时,才能去打第 0 个敌人。否则会扑空(报错)!

👾
👾
size() = 2
🔄

实时更新 (Update)

战场瞬息万变,每一轮循环都要重新“点名”。

while (true) { // 每一轮重新获取最新名单 auto neutrals = hero.findEnemies(); if (neutrals.size()) { hero.say(neutrals[0]); } else { hero.say("没人了"); } }
"不能拿着旧名单去点名,新同学可能刚进来,旧同学可能走了。"
📸

Loop 里的每一次 find
都是一张新快照

👉

遍历:挨个点名

用 while 循环加上 index 变量,可以把列表里的每个人都问候一遍。

int friendIndex = 0; // 只要索引小于总人数 while (friendIndex < friendNames.size()) { auto name = friendNames[friendIndex]; hero.say(name + ", go home!"); // 指向下一位 friendIndex += 1; }
👉
0. Joan
1. Ronan
2. Nikita
3. Augustus
🎓

列表大师口诀

"方括号 [] 是队伍,
index 0 是排头兵。"
".size() 告诉你有多长,
while 循环挨个查!"
📜

我的知识宝藏 · 一页复习

扣哒世界 · 计算机科学4 · C++ · 第9–13关

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

什么是列表?

可以把它想象成:一排排好队的椅子。

索引:从 0 开始数!

在程序世界里,第一个位置是 0,不是 1!

auto items = hero.findItems();

实战 I:团队合作

我们要分别指挥每个人去拿不同的宝石。

auto items = hero.findItems();

列表长度:size()

想知道队伍里有几个人?用 .size() 方法。

auto enemies = hero.findEnemies();

实时更新

战场瞬息万变,每一轮循环都要重新“点名”。

auto neutrals = hero.findEnemies();

遍历:挨个点名

用 while 循环加上 index 变量,可以把列表里的每个人都问候一遍。

hero.say(name + ", go home!");

本节课关卡:9. 团队合作;10. 协助防御;11. 招募队伍;12. 第二宝石;13. Sarven 救世主