CodeCombat 循环篇

第9关 - 第16关:沟通、救人与无限循环

说话与注释
hero.say("Password")
学会从注释中寻找线索。
While True 循环
while True:
让代码永远重复执行,注意缩进
No.9

第9关 组合挑战:睡眠时刻

关卡思路

这是一个期中考试
不要吵醒沉睡的食人魔(不要走过碎石堆)。

移动参数: moveRight(2)

字符串攻击: attack("Ursa")

基本移动: moveDown()

solution.py
1
hero.moveRight(2)
快速接近 Ursa。
2
hero.attack("Ursa")
攻击 Ursa x1。
3
hero.attack("Ursa")
攻击 Ursa x2。
4
hero.moveDown()
调整位置。
5
hero.moveLeft(2)
向左2格找 Rexxar。
6
hero.moveUp(2)
向上2格。
7
hero.attack("Rexxar")
攻击 Rexxar x2。
8
hero.attack("Rexxar")
再次攻击。
9
hero.moveRight()
接近 Brack。
10
hero.attack("Brack")
攻击 Brack x2。
11
hero.attack("Brack")
再次攻击。
12
hero.moveRight(2)
大跨步逃生!
No.10

第10关 注释中的密语

关卡思路

你被关在监牢里,门外有个巫师。
你需要**说出密码**让他放你出去。

注释 (Comment): 以 # 开头的绿色文字。电脑会忽略它们,但对人很有用!
这一关密码就藏在注释里:"Achoo" (阿嚏!)。

solution.py
1
hero.say("密码是什么?")
询问巫师。
2
# 密码是: "Achoo"
找到了! 密码是 Achoo。
3
hero.say("Achoo")
大声说出密码!
4
hero.moveUp()
门开了,出去。
5
hero.moveUp()
逃离。
No.11

第11关 Kithgard 图书管理员

关卡思路

你需要密码才能通过图书馆大门。
但是密码不在代码注释里了,在哪里呢?

技巧:提示按钮 点击代码窗口右上角的蓝色 提示 按钮。
你会发现密码是:"Hush" (嘘!)
solution.py
1
hero.moveRight()
走向大门。
2
hero.say("Hush")
说出提示里的密码。
3
hero.moveRight()
通过大门。
No.12

第12关 囚犯

关卡思路

你需要解救盟友 Patrick,他被关在 "Weak Door" (弱门) 后面。

  1. 打破门: 攻击 "Weak Door"。
  2. 释放盟友: Patrick 会出来帮你打怪。
  3. 击败守卫: 守卫的名字叫 "Two"。
  4. 拿宝石: 战斗胜利后去拿宝石。
solution.py
1
hero.moveRight()
接近牢门。
2
hero.attack("Weak Door")
打破门,把门当成敌人攻击。
3
hero.moveRight(2)
接近守卫 Two。
4
hero.moveDown(2)
向下走位。
5
hero.attack("Two")
攻击 Two x1。
6
hero.attack("Two")
攻击 Two x2。
7
hero.attack("Two")
攻击 Two x3。
8
hero.attack("Two")
攻击 Two x4。
9
hero.attack("Two")
攻击 Two x5。
10
hero.attack("Two")
攻击 Two x6 (终于死了!)
11
hero.moveRight()
去拿宝石。
12
hero.moveDown()
到达终点。
No.13

第13关 焰中舞动

关卡思路:无限循环

你需要永远在火焰中跳舞:左、右、左、右……
如果一直写 moveLeft(), moveRight() 手会断的!

While True 循环

while True: 就像一个“永动机”。
放在它缩进里面的代码,会一遍又一遍地执行,永远不会停止。

关键: 记得按 Tab 键缩进!

solution.py
1
while True:
循环开始:当"真"为"真"时(也就是永远)。
2
hero.moveRight()
缩进:向右移动。
3
# 在这里给循环里加 moveLeft 命令。
提示:不要忘了反向。
4
hero.moveLeft()
缩进:向左移动。
No.14

第14关 闹鬼的迷宫

关卡思路

这个迷宫的路径是重复的:
右 -> 右 -> 上 -> 上 -> (重复)

我们只需要写一次这个组合,然后把它放进 while True 循环里。
英雄就会自动重复这个路径,直到走出迷宫!

solution.py
1
while True:
开启无限循环。
2
hero.moveRight()
第1步:向右。
3
hero.moveRight()
第2步:向右。
4
hero.moveUp()
第3步:向上。
5
hero.moveUp()
第4步:向上。
循环结束,回到第1行重复。
No.15

第15关 再下一步

关卡思路

限制: 只能使用 4 条语句!

迷宫的规律是:向右走 2 格,然后向下走 1 格。
为了节省代码行数,我们必须使用参数 moveRight(2)

solution.py
1
while True:
循环开始。
2
hero.moveRight(2)
参数优化:一步走2格。
3
hero.moveDown()
向下走。
No.15a

第15a关 迷一般的 Kithmaze

关卡思路

观察这个迷宫的**重复模式**。

1. 向右
2. 向下
3. 向右(长)
4. 向上

把这一套动作放进循环,英雄就能不断重复这套动作穿过迷宫。

solution.py
1
while True:
模式循环。
2
hero.moveRight()
R
3
hero.moveDown()
D
4
hero.moveRight(2)
R(2)
5
hero.moveUp()
U
No.15b

第15b关 辐射光环

关卡思路

骷髅怪太强了,不能打!
但是你捡起了发光石,骷髅会害怕光。

策略: 1. 向上走吓跑上面的骷髅。 2. 向下走吓跑下面的骷髅。 3. 趁机向右冲刺。 4. 重复这个过程。

solution.py
1
while True:
保持光环移动。
2
hero.moveUp()
向上驱散。
3
hero.moveDown()
向下驱散。
4
hero.moveRight(2)
趁机推进2格。
No.16

第16关 概念挑战:循环仓库

关卡思路

这是一个概念挑战关卡。
找到能穿过仓库并收集所有宝石的**单一循环模式**。

限制: 不超过 5 条语句。
路径:上(2) -> 右(2) -> 下 -> 左。
这个形状就像是一个个倒着的 "U" 字形连接起来。

solution.py
1
while True:
循环开始。
2
hero.moveUp(2)
上2格。
3
hero.moveRight(2)
右2格。
4
hero.moveDown()
下1格。
5
hero.moveLeft()
左1格。