CodeCombat

C++ 编程关卡详解手册

左侧:思路分析
包含故事背景、地图策略和图形化演示。
右侧:代码详解
每行代码与解释通过相同颜色的标记对应。
No.1

第1关 Kithgard 地牢

关卡思路

这是你的第一次冒险!
你需要通过编写 C++ 代码来控制英雄。想象代码就是一系列发给英雄的**指令**。

顺序很重要:
如果先走向下,就会撞墙。必须按照地图的路径一步步来。注意 C++ 中每行语句结束必须加分号 ;。

Path Visualization
Right Down Right
solution.cpp
1
int main() {
程序入口。
2
// 向宝石进发。
注释:使用 // 开头。
3
hero.moveRight();
第1步 英雄向右移动。
4
hero.moveDown();
第2步 向下转弯避开墙壁。
5
hero.moveRight();
第3步 冲刺拿到宝石。
6
return 0;
结束程序。
7
}
No.2

第2关 深藏的宝石

关卡思路

这一关地图变大了,我们需要从入口走到里面,拿完宝石再**原路返回**。

进去:Right, Down
出来:Up, Up, Right

提示:退出来的时候,方向是相反的哦!别忘了分号!

solution.cpp
1
int main() {
2
hero.moveRight();
出发向右。
3
hero.moveDown();
向下拿底部的宝石。
4
hero.moveUp();
立刻原路向上返回。
5
hero.moveUp();
继续向上回到主干道。
6
hero.moveRight();
最后向右到达出口。
7
return 0;
8
}
No.3

第3关 幽影守卫

关卡思路

有个可怕的食人魔盯着中间的路!
我们不能走直线,必须**利用掩体**(雕像)。

掩体
solution.cpp
1
int main() {
2
hero.moveRight();
向右走。
3
hero.moveUp();
向上躲进掩体后面!
4
hero.moveRight();
在掩体阴影下向右移动。
5
hero.moveDown();
绕过危险后,向下回主路。
6
hero.moveRight();
到达终点。
7
return 0;
8
}
No.3a

第3a关 逆时针回转

关卡思路

新知识:参数 (Arguments)
括号里填数字,可以让英雄一次走多格。

食人魔在巡逻。我们需要跟在他屁股后面走。 为了不被追上,我们需要用 moveDown(2); 快速切入他的路线!

solution.cpp
1
int main() {
2
hero.moveDown(2);
加速: 括号里的 2 让你一步走两格,快速切入!
3
hero.moveRight();
跟在食人魔后面。
4
hero.moveUp();
向上转弯。
5
hero.moveRight();
拿宝石。
6
return 0;
7
}
No.3b

第3b关 狭路相逢

关卡思路

这是一场心理战!门口有守卫。

  1. 假动作: 先走出去一步引起注意。
  2. 躲回来: 马上缩回来,让食人魔扑空。
  3. 冲刺: 等他走过去,用参数 2 快速穿过门廊。
solution.cpp
1
int main() {
2
hero.moveRight();
第1步:假装出去。
3
hero.moveLeft();
第2步:立刻躲回来!(诱骗)
4
hero.moveRight(2);
第3步:趁机冲刺2格过门。
5
return 0;
6
}
No.4

第4关 概念挑战:细心脚步

关卡思路

这是一个迷宫大挑战!没有新技巧,只考验你的**细心**。

你需要把整个长路径拆分成一小段一小段。不要急,走一步看一步。 最后要走到红色的 X 标记处。

solution.cpp
1
int main() {
2
hero.moveUp();
起步。
3
hero.moveRight();
拿到第1颗宝石。
4
hero.moveDown();
绕过墙壁。
5
hero.moveRight();
深入迷宫。
6
hero.moveLeft();
拿完东西往回走一点。
7
hero.moveDown();
寻找下方出口。
8
hero.moveUp();
调整位置。
9
hero.moveUp();
继续调整。
10
hero.moveLeft();
走向出口方向。
11
hero.moveDown();
调整。
12
hero.moveLeft();
继续。
13
hero.moveLeft();
到达终点。
14
return 0;
15
}
No.5

第5关 敌人的陷阱

关卡思路

地上全是火焰!一步一步走很容易踩到火里。

技能:大跨步 moveRight(3);

使用括号里的数字 3,让英雄像跳远一样,直接跨过危险区域!

solution.cpp
1
int main() {
2
hero.moveRight(3);
大跨步:一次走3格避开上方火焰。
3
hero.moveUp();
调整位置。
4
hero.moveRight();
调整位置。
5
hero.moveDown(3);
大跨步:向下跳3格穿过火区。
6
hero.moveRight(2);
最后冲刺。
7
return 0;
8
}
No.5a

第5a关 虚幻干扰

关卡思路

我们需要使用**诱饵**。
地图上的 X 标记是一个机关。

  1. 走到 X 处(向下2格)。
  2. 机关会生成一个假人,守卫会去打假人。
  3. 你趁机逃跑,绕去拿宝石。
solution.cpp
1
int main() {
2
hero.moveRight();
出发。
3
hero.moveDown(2);
触发:走到 X 处激活诱饵。
4
hero.moveUp(2);
逃跑:立刻原路逃回。
5
hero.moveRight(3);
守卫被引开了,去拿宝石。
6
return 0;
7
}
No.5b

第5b关 健忘的宝石匠

关卡思路

这是一个练习关,宝石到处都是。

技巧:自动补全 不要一个个字母敲!
输入 he -> 按 Enter -> hero
输入 .m -> 按 Enter -> .moveRight
solution.cpp
1
int main() {
2
hero.moveRight();
第一颗宝石。
3
hero.moveDown();
向下调整。
4
hero.moveRight(2);
长距离:用参数 2 省事。
5
hero.moveUp();
拿角落的宝石。
6
hero.moveRight();
出口。
7
return 0;
8
}
No.6

第6关 概念挑战:漫长脚步

关卡思路

限制: 代码行数必须少于 8 行。

你必须使用参数来优化代码。
比如 `moveUp(3);` 只占 1 行,而写三次 `moveUp();` 占 3 行。

solution.cpp
1
int main() {
代码行数挑战开始。
2
hero.moveRight(1);
向右1格。
3
hero.moveUp(3);
关键:一口气走3格,省代码!
4
hero.moveRight(2);
向右2格。
5
hero.moveDown(3);
关键:向下3格,直达底部。
6
hero.moveLeft(1);
微调。
7
hero.moveUp(2);
回到主路层。
8
hero.moveRight(3);
冲刺到出口。
9
return 0;
10
}