zoukankan      html  css  js  c++  java
  • 「网易官方」极客战记(codecombat)攻略-沙漠-银行突袭_bank-raid

    (点击图片进入关卡)

    食人魔们认为他们能够夺走我们的黄金,愚蠢至极!

    简介

    为了找到并遍历所有的敌人和物品,你可以用 findEnemies() 或者 findItems() 以及 while 循环。

    enemies = hero.findItems()
    enemyIndex = 0
    # 遍历敌人数组。
    while enemyIndex < len(enemies):
        enemy = enemies[enemyIndex]
        hero.attack(enemy)
        # 重要: 增加 enemyIndex 变量的值。
        # 否则代码会陷入死循环。
        enemyIndex += 1

    默认代码

    # 等待食人魔,击败他们并收集黄金。
    while True:
        enemies = hero.findEnemies()
        # enemyIndex 用于迭代数组。
        enemyIndex = 0
        # 虽然enemyIndex小于len(敌人)
        while enemyIndex < len(enemies):
            # 在enemyIndex攻击敌人
            enemy = enemies[enemyIndex]
            hero.attack(enemy)
            # 给 enemyIndex 加上 1。
            enemyIndex += 1
        coins = hero.findItems()
        # coinIndex用于迭代硬币数组。
        coinIndex = 0
        while coinIndex < len(coins):
            # 用 coinIndex 从 coins 数组得到一个金币。

     

            # 收集那个金币。

     

            # 给 coinIndex 的值增加 1。
            coinIndex += 1

    概览

    你可以用 while - 条件循环 (或 “迭代”('iterate',有时称为 “遍历”)) 一个数组。

    第一步,创建一个用作数组索引 (index) 的变量。

    初始值应该为 0 ,也就是说你第一个读到的就是索引为 0 的值。 然后每次把索引变量加上 1 ,读取下一个元素 (element)。 (记得第二个元素的 索引 是 1 )

    至于 while 条件 则是检查 索引变量 是否仍小于数组长度。

    举个栗子例子:

    items = hero.findItems()
    itemIndex = 0
    while itemIndex < len(items):
        item = items[itemIndex]
        hero.say(item)
        itemIndex += 1

    别忘了每次循环里增加 itemIndex 的值,否则你会因为无限循环 (infinite loop) 毁灭世界的。

    如果你需要对几组事物 (敌人啊,朋友啊什么的) 进行操作,那你可以将这些代码放进另一个 while 循环 里。比如放进 while-true 循环 之后你的英雄会周而复始迭代处理每组事物。

    while True:
        items = hero.findItems()
        itemIndex = 0
        while itemIndex < len(items):
            item = items[itemIndex]
            hero.moveXY(item.pos.x, item.pos.y)
            itemIndex += 1

    银行突袭 解法

    # 等待食人魔,击败他们并收集黄金。
    while True:
        enemies = hero.findEnemies()
        # enemyIndex 用于迭代数组。
        enemyIndex = 0
        # 虽然enemyIndex小于len(敌人)
        while enemyIndex < len(enemies):
            # 在enemyIndex攻击敌人
            enemy = enemies[enemyIndex]
            hero.attack(enemy)
            # 给 enemyIndex 加上 1。
            enemyIndex += 1
        coins = hero.findItems()
        # coinIndex用于迭代硬币数组。
        coinIndex = 0
        while coinIndex < len(coins):
            # 用 coinIndex 从 coins 数组得到一个金币。
            coin = coins[coinIndex]
            # 收集那个金币。
            hero.moveXY(coin.pos.x, coin.pos.y)
            # 给 coinIndex 的值增加 1。
            coinIndex += 1
     
    本攻略发于极客战记官方教学栏目,原文地址为:
  • 相关阅读:
    (转)关于c#中的事件
    MySql数据库--持续记录ing
    在Eclipse中通过JDBC连接MySQL步骤,非常详细!
    mybatis传入参数类型parameterType和输出结果类型resultType详解
    关于JDBC访问存储过程的问题
    Mybatis(一)入门
    [Redis] 基于redis的分布式锁
    分布式锁----浅析redis实现
    MyBatis的增删改查操作
    C3P0连接池工具类实现步骤及方法
  • 原文地址:https://www.cnblogs.com/codecombat/p/13383766.html
Copyright © 2011-2022 走看看