• 「网易官方」极客战记(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)
     
    本攻略发于极客战记官方教学栏目,原文地址为:
     
  • 相关阅读:
    重定义自定义类型
    范式
    管理
    JVM调优[转]
    I/O相关的等待事件
    等待事件监测性能瓶颈
    Shared pool
    SQL*Plus和PL/SQL
    Oracle优化器和执行计划
    10053事件
  • 原文地址:https://www.cnblogs.com/codecombat/p/13272539.html
Copyright © 2020-2023  润新知