「网易官方」极客战记(codecombat)攻略-沙漠-复查-double-cheek

(点击图片进入关卡)

你能在兽人灵敏的鼻子下小心收集金币吗?

简介

首先在村庄里击败 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)
 
本攻略发于极客战记官方教学栏目,原文地址为:
 
原文地址:https://www.cnblogs.com/codecombat/p/13272539.html