食人魔們認為他們能夠奪走我們的黃金,愚蠢至極!
簡介
為了找到並遍歷所有的敵人和物品,你可以用 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
本攻略發於極客戰記官方教學欄目,原文地址為:
https://codecombat.163.com/news/jikezhanji-yinhangtuxi
極客戰記——學編程,用玩的!
閱讀更多 極客戰記 的文章