• 「网易官方」极客战记(codecombat)攻略-沙漠-沙漠核心-crux-of-the-desert


    (点击图片进入关卡)

    食人魔们从非主要方向进攻!放置灭火器来教他们不要再次逆火而行。

    简介

    兽人从对角线方向攻来。

    首先,找到敌人是 isAbove (在上面) 还是 isBelow (在下面) 。

    然后找出敌人是 isLeft (在左边) 还是 isRight (在右边)

    然后,综合所有条件在正确的 X 标记处建造 "fire-trap" 。

    默认代码

    # 找出食人魔是来自哪个方向的
    while True:
        enemy = hero.findNearestEnemy()
        if enemy:
            # 左边:enemy.pos.x小于hero.pos.x
            isLeft = hero.pos.x > enemy.pos.x
            # 上方:enemy.pos.y大于hero.pos.y
            isAbove = hero.pos.y < enemy.pos.y
            # 右边:enemy.pos.x大于hero.pos.x

     

            # 下方:enemy.pos.y小于hero.pos.y

     

            # 如果敌人在上方 (isAbove) 和 左边 (isLeft):
            # buildXY()是X标记处的一个"fire-trap"。
            if isLeft and isAbove:
                hero.buildXY("fire-trap", 20, 51)
            # 如果敌人在上方 (isAbove) 和右边 (isRight):
            # buildXY()是X标记处的一个"fire-trap"。

     

            # 如果敌人在下方 (isBelow) 和左边 (isLeft):
            # buildXY()是X标记处的一个"fire-trap"。

     

            # 如果敌人在下方 (isBelow) 和右边 (isRight):
            # buildXY()是X标记处的一个"fire-trap"。

     

            hero.moveXY(40, 34)
        else:
            hero.moveXY(40, 34)

    概览

    在这关,兽人从对角线方向进攻!

    在 左边 的敌人的 pos.x 会小于英雄的 pos.x 。

    在 右边 的敌人的 pos.x 会大于英雄的 `pos.x'。

    在 上边 的敌人的 pos.y 会大于英雄的 pos.y 。

    在 下边 的敌人的 pos.y 会小于英雄的 pos.y 。

    检查敌人是否在左上角,大概这样做:

    enemy = hero.findNearestEnemy()
    if enemy:
        if enemy.pos.x < hero.pos.x and enemy.pos.y > hero.pos.y:
            # 在左上角建造陷阱。

    不过有更加清晰的写法:

    enemy = hero.findNearestEnemy()
    if enemy:
        isAbove = enemy.pos.y > hero.pos.y
        isLeft = enemy.pos.x < hero.pos.x
        if isAbove and isLeft:
            # 在左上角建造陷阱。

    不仅方便补全其他方向的代码,还容易看懂!

    沙漠核心 解法

    # 找出食人魔是来自哪个方向的
    while True:
        enemy = hero.findNearestEnemy()
        if enemy:
            # 左边:enemy.pos.x小于hero.pos.x
            isLeft = hero.pos.x > enemy.pos.x
            # 上方:enemy.pos.y大于hero.pos.y
            isAbove = hero.pos.y < enemy.pos.y
            # 右边:enemy.pos.x大于hero.pos.x
            isRight = hero.pos.x < enemy.pos.x
            # 下方:enemy.pos.y小于hero.pos.y
            isBelow = hero.pos.y > enemy.pos.y
            # 如果敌人在上方 (isAbove) 和 左边 (isLeft):
            # buildXY()是X标记处的一个"fire-trap"。
            if isLeft and isAbove:
                hero.buildXY("fire-trap", 20, 51)
            # 如果敌人在上方 (isAbove) 和右边 (isRight):
            # buildXY()是X标记处的一个"fire-trap"。
            if isRight and isAbove:
                hero.buildXY("fire-trap", 60, 51)
            # 如果敌人在下方 (isBelow) 和左边 (isLeft):
            # buildXY()是X标记处的一个"fire-trap"。
            if isLeft and isBelow:
                hero.buildXY("fire-trap", 20, 17)
            # 如果敌人在下方 (isBelow) 和右边 (isRight):
            # buildXY()是X标记处的一个"fire-trap"。
            if isRight and isBelow:
                hero.buildXY("fire-trap", 60, 17)
            hero.moveXY(40, 34)
        else:
            hero.moveXY(40, 34)
     
    本攻略发于极客战记官方教学栏目,原文地址为:
     
     
     
  • 相关阅读:
    VScode+phpStudy搭建php代码调试环境
    bluekeep漏洞(CVE-2019-0708)利用
    bugku论剑场web解题记录
    upload-labs通关集
    攻防世界web新手区
    Vulnhub-XXE靶机学习
    Volatility取证使用笔记
    攻防世界WEB新手练习
    攻防世界MISC新手练习
    攻防世界CRYPTO新手练习
  • 原文地址:https://www.cnblogs.com/codecombat/p/13163361.html
Copyright © 2020-2023  润新知