zoukankan      html  css  js  c++  java
  • 【网易官方】极客战记(codecombat)攻略-森林-以静制动stillness-in-motion

    通过使用嵌套 if 语句停留在中间。

    简介

    将每个 if/else 考虑成一个容器,其中又可以容纳另一个 if/else 结构!参见:

    enemy = hero.findNearestEnemy()
    if enemy:
        if enemy.type == "munchkin":
            hero.say("我看到一个矮人!")
        else:
            hero.say("我看见其他类型的敌人!")
    else:
        hero.say("我没有看见任何敌人...")

    缩进 一定要小心。

    默认代码

    # 你可以将一个if语句放到另一个if语句当中。
    # 你必须注意这些if语句是如何互相影响的。
    # 请确保代码缩进正确!
    # 从外层if/else结构开始会有帮助
    # 使用注释为内层if/else占位预留空间:
    while True:
        enemy = hero.findNearestEnemy()
        # 如果有敌人出现,那么就...
        if enemy:
            # 使用distanceTo创建一个距离变量
            # 如果敌人与你的距离小于5米,那么就攻击它
            # 否则(这名敌人还离得很远),就使用shield
            pass
        # 否则(没有敌人)...
        else:
            # …那么,回到X位置。
            hero.moveXY(40, 34)

    概览

    在这一关中,为了不让猎头者看见你,你必需停留在中间的区域!

    你将会使用 嵌套 if 语句。

    在写嵌套 if 语句时,你需要仔细注意如何设置程序的流程。

    如果你的 if 语句很复杂,你可以一步步来,先用注释写下想法,然后再修改成代码。 比如在这一关,我们可以先开始写以下内容:

    #如果敌人出现,然后....
        # 做些什么
    # 否则 (没有敌人的话)...
        # 就移回到X

    下一步,修改注释并把想法转成 if/else 语句和移动函数的代码:

    if enemy:
        # 做些什么
    else:
        hero.moveXY(40, 34)

    现在可以再细化 "做些什么" 那句,添加更多详细的想法

    if enemy:
        # 如果敌人在5米内,那么就攻击他
        # 否则 (敌人在远处外), 使用shield()函数防御
    else:
        hero.moveXY(40, 34)

    最后,把 if/else 语句中的注释转化成代码,并且确保缩进正确:

    if enemy:
        if hero.distanceTo(enemy) < 5:
            hero.attack(enemy)
        else:
            hero.shield()
    else:
        hero.moveXY(40, 34)

    还有,在 while true 循环这样的循环语句下,if 和 else 等语句也要缩进:

    while True:
        enemy = hero.findNearestEnemy()
        if enemy:
            if hero.distanceTo(enemy) < 5:
                hero.attack(enemy)
            else:
                hero.shield()
        else:
            hero.moveXY(40, 34)

    小贴士: 你可以选中一块代码,然后按 Tab 增加缩进,或者按 Shift+Tab 减少缩进。

    以静制动 解法

        # 你可以将一个if语句放到另一个if语句当中。
        # 你必须注意这些if语句是如何互相影响的。
        # 请确保代码缩进正确!
        # 从外层if/else结构开始会有帮助
        # 使用注释为内层if/else占位预留空间:
    while True:
        enemy = hero.findNearestEnemy()
        # 如果有敌人出现,那么就...
        if enemy:
            # 使用distanceTo创建一个距离变量
            distance = hero.distanceTo(enemy)
            # 如果敌人与你的距离小于5米,那么就攻击它
            if distance < 5:
                hero.attack(enemy)
            # 否则(这名敌人还离得很远),就使用shield
            else:
                hero.shield()
        # 否则(没有敌人)...
        else:
            # …那么,回到X位置。
            hero.moveXY(40, 34)
     
     
    本攻略发于极客战记官方教学栏目,原文地址为:
     
     
  • 相关阅读:
    使用python打印九九乘法表
    python导入库的几种方式
    节点的介数
    连通图、强连通图、弱连通图
    python的基本格式化输出
    pycharm中的py文件重命名
    设置pycharm,在python程序的开头添加时间和作者等信息
    使用pandas库对csv文件进行筛选和保存
    python获取Excel表中某一格的数据
    使用python向txt文件写入内容
  • 原文地址:https://www.cnblogs.com/codecombat/p/12186658.html
Copyright © 2011-2022 走看看