(点击图片进入关卡)
你能在兽人灵敏的鼻子下小心收集金币吗?
简介
首先在村庄里击败 6 名兽人。 然后收集至少 30 金币。金币在绿洲附近散落。
while 循环 是重复动作至达到目标的一个好方法。
while hero.gold < 30:
item = hero.findNearestItem()
if item:
hero.moveXY(item.pos.x, item.pos.y)
确保你在 while 循环 里做点什么,否则你可能会遇上死循环 (infinite loop)。
默认代码
# 第一点,打败6位ogres~
# 然后收集硬币,直到你有30金。
# 变量用来对ogres计数
defeatedOgres = 0
# 没打败6位ogres,就继续打
while defeatedOgres < 6:
enemy = hero.findNearestEnemy()
if enemy:
hero.attack(enemy)
defeatedOgres += 1
else:
hero.say("食人魔!")
# 移到地图的右侧。
hero.moveXY(49, 36)
# 钱没攒够30块,就继续捡
while hero.gold < 30:
# 寻找并收集金币
# 去掉这行 say()。
hero.say("我应该收集金币!")
# 移动到出口。
hero.moveXY(76, 32)
概览
就像 if 语句一样,while 条件 循环需要制定一个 条件。 每次循环回到开头时,while 会检查 条件 是否为 真。 如果是,循环会继续执行。如果不是,循环停止,继续执行循环后面的代码。
换句话说," 当 (While) 条件 成立时,一直循环。"
注意,如果你的条件一直为真,有可能创建一个 死循环 (infinite loop) !
defeatedOgres = 0
while defeatedOgres < 6:
enemy = hero.findNearestEnemy()
if enemy:
hero.attack(enemy)
defeatedOgres += 1
复查 解法
# 第一点,打败6位ogres~
# 然后收集硬币,直到你有30金。
# 变量用来对ogres计数
defeatedOgres = 0
# 没打败6位ogres,就继续打
while defeatedOgres < 6:
enemy = hero.findNearestEnemy()
if enemy:
hero.attack(enemy)
defeatedOgres += 1
else:
hero.say("食人魔!")
# 移到地图的右侧。
hero.moveXY(49, 36)
# 钱没攒够30块,就继续捡
while hero.gold < 30:
# 寻找并收集金币
item = hero.findNearestItem()
if item:
hero.moveXY(item.pos.x, item.pos.y)
# 移动到出口。
hero.moveXY(76, 32)
本攻略发于极客战记官方教学栏目,原文地址为: