CodeCombat

Python 编程关卡详解手册

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

第1关 Kithgard 地牢

关卡思路

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

顺序很重要:
如果先走向下,就会撞墙。必须按照地图的路径一步步来。

Path Visualization
Right Down Right
solution.py
1
# 向宝石进发。
注释:说明目标。
2
# 小心尖刺!
注释:提醒避开危险。
3
hero.moveRight()
第1步 英雄向右移动。
4
hero.moveDown()
第2步 向下转弯避开墙壁。
5
hero.moveRight()
第3步 最后冲刺拿到宝石。
No.2

第2关 深藏的宝石

关卡思路

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

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

提示:退出来的时候,方向是相反的哦!

solution.py
1
# 收集宝石。
任务说明。
2
hero.moveRight()
出发向右。
3
hero.moveDown()
向下拿底部的宝石。
4
hero.moveUp()
拿到后立刻原路向上返回。
5
hero.moveUp()
继续向上回到主干道。
6
hero.moveRight()
最后向右到达出口。
No.3

第3关 幽影守卫

关卡思路

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

掩体

策略:像忍者一样,从掩体(雕像)后面绕过去。

solution.py
1
# 避开食人魔视线。
潜行任务。
2
hero.moveRight()
向右走。
3
hero.moveUp()
向上躲进掩体后面!
4
hero.moveRight()
在掩体阴影下向右移动。
5
hero.moveDown()
绕过危险后,向下回主路。
6
hero.moveRight()
到达终点。
No.3a

第3a关 逆时针回转

关卡思路

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

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

solution.py
1
# 避开食人魔。
提示:要在背后行动。
2
hero.moveDown(2)
加速: 括号里的 2 让你一步走两格,快速切入!
3
hero.moveRight()
跟在食人魔后面。
4
hero.moveUp()
向上转弯。
5
hero.moveRight()
拿宝石。
No.3b

第3b关 狭路相逢

关卡思路

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

  1. 假动作: 先走出去一步引起注意。
  2. 躲回来: 马上缩回来,让食人魔扑空。
  3. 冲刺: 等他走过去,用参数 2 快速穿过门廊。
solution.py
1
# 调虎离山。
战术目标。
2
hero.moveRight()
第1步:假装出去。
3
hero.moveLeft()
第2步:立刻躲回来!(诱骗)
4
hero.moveRight(2)
第3步:趁机冲刺2格过门。
No.4

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

关卡思路

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

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

solution.py
1
# 走出迷宫。
迷宫很长,请耐心。
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.moveLeft()
到达终点。
No.5

第5关 敌人的陷阱

关卡思路

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

技能:大跨步 moveRight(3)

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

solution.py
1
# 使用参数跨越火焰。
避免烧焦!
2
hero.moveRight(3)
大跨步:一次走3格避开上方火焰。
3
hero.moveUp()
调整位置。
4
hero.moveRight()
调整位置。
5
hero.moveDown(3)
大跨步:向下跳3格穿过火区。
6
hero.moveRight(2)
最后冲刺。
No.5a

第5a关 虚幻干扰

关卡思路

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

  1. 走到 X 处(向下2格)。
  2. 机关会生成一个假人,守卫会去打假人。
  3. 你趁机逃跑,绕去拿宝石。
solution.py
1
# 激活诱饵。
战术布局。
2
hero.moveRight()
出发。
3
hero.moveDown(2)
触发:走到 X 处激活诱饵。
4
hero.moveUp(2)
逃跑:立刻原路逃回。
5
hero.moveRight(3)
守卫被引开了,去拿宝石。
No.5b

第5b关 健忘的宝石匠

关卡思路

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

技巧:自动补全 不要一个个字母敲!
输入 he -> 按 Enter -> hero
输入 .m -> 按 Enter -> .moveRight
solution.py
1
# 收集宝石。
开始练习。
2
hero.moveRight()
第一颗宝石。
3
hero.moveDown()
向下调整。
4
hero.moveRight(2)
长距离:用参数 2 省事。
5
hero.moveUp()
拿角落的宝石。
6
hero.moveRight()
出口。
No.6

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

关卡思路

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

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

solution.py
1
# 代码要少于8行。
目标:精简代码。
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)
冲刺到出口。