游魂
学习内容:
Array LengthAccessing Properties变量While LoopsIterating Over ArraysWhile Loops with Conditionals
# 攻击骷髅捡走宝石
while True:
enemies = hero.findEnemies()
enemyIndex = 0
while enemyIndex < len(enemies):
enemy = enemies[enemyIndex]
# 敌人有血量时进攻。
while enemy.health > 0:
hero.attack(enemy)
enemyIndex += 1
items = hero.findItems()
itemIndex = 0
# 遍历所有的物品。
while itemIndex < len(items):
item = items[itemIndex]
#distance = hero.distanceTo(item)
# 而距离大于2:
while hero.distanceTo(item) > 2:
# 试着拿到物品
hero.moveXY(item.pos.x, item.pos.y)
# 别忘了让itemIndex变大 (itemIndex+=1)或(itemIndex=itemIndex+1)
itemIndex += 1
潜伏
# 用findEnemies把敌人存在数组enemies中
# 只攻击萨满巫师,不要攻击牦牛!
enemies = hero.findEnemies()
enemyIndex = 0
# 把这段代码用一个while loop 功能循环遍历所有的敌人
# 当 enemyIndex 小于 enemies 的长度时:
while enemyIndex < len(enemies):
enemy = enemies[enemyIndex]
if enemy.type == 'shaman':
while enemy.health > 0:
hero.attack(enemy)
# 记得增加enemyIndex
enemyIndex += 1
优待
# 首先,在所有的敌人中循环...
enemies = hero.findEnemies()
enemyIndex = 0
# ...但是仅攻击"thrower"类型的敌人。
while enemyIndex < len(enemies):
enemy = enemies[enemyIndex]
if enemy and enemy.type == "thrower":
hero.attack(enemy)
enemyIndex += 1
# 然后再到所有的敌人中循环...
enemies = hero.findEnemies()
enemyIndex = 0
# ...干掉仍然活着的每个
while enemyIndex < len(enemies):
enemy = enemies[enemyIndex]
if enemy and hero.isReady("cleave"):
hero.cleave(enemy)
else:
hero.attack(enemy)
enemyIndex += 1
Sarven 牧羊人
我们来学习下数组长度的几种使用方式:
# 使用 while 循环来对付食人魔。
while True:
enemies = hero.findEnemies()
enemyIndex = 0
# 将攻击逻辑放到 while 循环里来攻击所有的敌人。
# 查找数组的长度: len(enemies)
while enemyIndex < len(enemies):
enemy = enemies[enemyIndex]
# "!=" 意思是 "不等于"
if enemy.type != "sand-yak":
# 当敌人的健康值大于0,攻击它!
if enemy.health > 0:
hero.attack(enemy)
enemyIndex += 1
# 在两波敌人之间,移动回中央。
hero.moveXY(40, 33)
掠夺者
# 打几下泡泡人捡走掉出的币
while True:
coin = hero.findNearestItem()
# 当存在金币时:
if coin:
# 移动到金币处。
hero.moveXY(coin.pos.x, coin.pos.y)
# ‘coin’应该是最近的那枚 捡到手以后要另找一枚最近的
coin = hero.findNearestItem()
enemy = hero.findNearestEnemy()
if enemy:
# 如果敌人还会动
if enemy.health > 0:
# 就打它
hero.attack(enemy)
猛砸他们全家
自己多好好想想,不只这一种代码实现方式。
# 小心那些食人魔。
# 它们是特殊训练的低脂肪超强食人魔。
# 关键词是“低脂肪”
enemies = hero.findEnemies()
items = hero.findItems()
Index = 0
while Index < len(enemies):
enemy = enemies[Index]
if enemy:
if hero.isReady("bash"):
hero.bash(enemy)
hero.moveXY(40, 33)
if items:
hero.moveXY(items[Index].pos.x, items[Index].pos.y)
else:
hero.say("The skill is not ready!!")
hero.moveXY(40, 33)
Index += 1
hero.moveXY(40, 33)
捡闪亮东西的人
一定要注意换行后的空行!!!!
# 很快的获取最多的金币
while True:
coins = hero.findItems()
coinIndex = 0
# 把这个封装进循环里枚举所有的硬币
while coinIndex < len(coins):
coin = coins[coinIndex]
# 金币价值3点。
if coin and coin.value == 3:
# 只捡金币。
coin = coins[coinIndex]
hero.moveXY(coin.pos.x, coin.pos.y)
coinIndex += 1
强壮的沙牦牛
# 当牦牛靠近时,向右移动10米来躲避。
# 躲避4头牦牛来通过此关。
while True:
# 获取英雄当前位置的x和y坐标。
x = hero.pos.x
y = hero.pos.y
# 找到最近的耗牛。
yak = hero.findNearestEnemy()
# 如果到牦牛的距离小于10:
if hero.distanceTo(yak) < 10:
# 向右移动,在英雄位置的x坐标值基础上加10。
x = hero.pos.x + 10
y = hero.pos.y
# 使用moveXY(x, y)来移动!
hero.moveXY(x, y)
沙丘
# 收集硬币,忽略"sand-yak"和"burl"。
while True:
enemy = hero.findNearestEnemy()
item = hero.findNearestItem()
if enemy:
if enemy.type == "sand-yak" or enemy.type == "burl":
# 别攻击!赶紧收集硬币。
if item:
hero.moveXY(item.pos.x, item.pos.y)
else:
# 否则,攻击。
hero.attack(enemy)
elif item:
# 收集硬币:移动到物品的位置。
hero.moveXY(item.pos.x, item.pos.y)
else:
hero.moveXY(41, 31)