zoukankan      html  css  js  c++  java
  • 【网易官方】极客战记(codecombat)攻略-森林-跃火林中forest-fire-dancing

    有人忘了扑灭他们的篝火!使用嵌套 if 躲避火球。

    简介

    你可以在一个 if语句 内嵌套 (nest) 另一个 if语句 做出更复杂的选择。

    用这个技能找到安全点,避开火球!

    默认代码

    敬请期待

    概览

    现在的处境可能让你想起了上一关,焰中舞动,不过这次你得同时应付两个火球了!在上方,火球随机出现,所以你不能直接来回走。 决定安全地点的方法需要更巧妙:

    1. 如果在地图一侧看到宝石,赶快远离,移动到地图的另一侧。
    2. 如果没有宝石,就移动到中间。

    嵌套 If 结构

    为了让你的计划得手,你需要用上嵌套 (nested) if结构 。说白了就是把一个 if结构 嵌入到 另一个 if结构 里,做到更复杂的条件选择。(亲,看懂了吗?)

    if gem:
        if gem.pos.x == 34:
            hero.say('左边!')
        else:
            hero.say('右边!')
    else:
        hero.say('中间!')

    注意,嵌套内层的 if结构 需要更多缩进,说明它在外层结构的 里面 。向左走和向右走的条件分支在 内层if 的范围内,而在中间的条件分支则属于 外层 if 的范围。

    位置 (Position)

    游戏中每个物品 (或者单位) 都有一个 pos 属性,代表了他的坐标位置。而每个 pos 本身也是个对象,它又包含了x 和 y 属性,这两个属性可以用来完成比如 moveXY 或者 buildXY 这样的任务。

    enemy = hero.findNearestEnemy()
    if enemy:
        p = enemy.pos
        hero.say(p.x)
        hero.say(p.y)

    在这关的默认代码里,我们帮你把 pos 设置为 gem.pos ,不过在以后的关卡里,你得自己动手才能丰衣足食。

    跃火林中 解法

    while True:
        evilstone = hero.findNearestItem()
        if evilstone:
            pos = evilstone.pos
            if pos.x == 34:
                hero.moveXY(46, 22)
            else:
                hero.moveXY(34, 22)
        else:
            hero.moveXY(40, 22)
    本攻略发于极客战记官方教学栏目,原文地址为:
  • 相关阅读:
    python的特点
    epoll理解(转)
    数据库存储过程、触发器、连接
    Mysql的四种隔离级别
    linux指令
    利用asyncio(支持异步io)和协程实现单线程同步
    ubuntu安装codeblocks
    临界区与互斥量区别
    单链表的简单操作
    hdu 5475 An easy problem(暴力 || 线段树区间单点更新)
  • 原文地址:https://www.cnblogs.com/codecombat/p/12186644.html
Copyright © 2011-2022 走看看