返回荆棘农场 A (练习)
# 函数maybeBuildTrap定义了两个参数!
def maybeBuildTrap(x, y):
# 使用x和y作为移动的坐标。
hero.moveXY(x, y)
enemy = hero.findNearestEnemy()
if enemy:
# 使用buildXY在指定xy坐标处建造一个"fire-trap"
hero.buildXY("fire-trap", x, y)
while True:
# 这会调用maybeBuildTrap,使用左侧入口的坐标。
maybeBuildTrap(20, 34)
# 下面在下方入口处使用maybeBuildTrap!
maybeBuildTrap(38, 20)
# 下面在右侧入口使用maybeBuildTrap!
maybeBuildTrap(56, 34)
封闭的十字路口
# 只在看到敌人时进行建造。
# 该函数定义3个参数。
def maybeBuildSomething(buildType, x, y):
# 移动到参数为X 和 Y的位置
hero.moveXY(x, y)
# 找到最近的敌人
enemy = hero.findNearestEnemy()
# 如果存在敌人
if enemy:
# 那么使用buildXY,参数buildType, x, 和 y
hero.buildXY(buildType, x, y)
pass
while True:
# 调用 maybeBuildSomething,使用"fire-trap"及底部X的坐标。
maybeBuildSomething("fire-trap", 40, 20)
# 调用maybeBuildSomething,在左侧X处使用"fence"!
maybeBuildSomething("fence", 26, 34)
# 调用maybeBuildSomething,在顶部的X处使用"fire-trap"!
maybeBuildSomething("fire-trap", 40, 50)
# 调用maybeBuildSomething,在右侧X处使用"fence"!
maybeBuildSomething("fence", 54, 34)
收集金币
旗子方法熟悉关卡,后续我们在很多关卡会使用到旗子。使用旗子你需要点击提交后才可以使用!!
# 当你放好旗帜后点 提交。
# 点击提交后,旗帜按钮出现在左下角.
while True:
flag = hero.findFlag()
if flag:
hero.pickUpFlag(flag)
else:
hero.say("为英雄放置一面旗帜来移动.")
返回荆棘农场 B (练习)
# 函数maybeBuildTrap定义了两个参数!
def maybeBuildTrap(x, y):
# 使用x和y作为移动的坐标。
hero.moveXY(x, y)
enemy = hero.findNearestEnemy()
if enemy:
# 使用buildXY在指定xy坐标处建造一个"fire-trap"
hero.buildXY("fire-trap", x, y)
while True:
# 这会调用maybeBuildTrap,使用下方入口的坐标。
maybeBuildTrap(38, 20)
# 下面在右侧入口使用maybeBuildTrap!
maybeBuildTrap(56, 34)
# 现在在上方入口处使用maybeBuildTrap!
maybeBuildTrap(38, 48)
贪婪的陷阱
# 巡逻并只在看到金币时设置陷阱。
# 编写这个函数
def maybeBuildTrap(x, y):
# 移动到给定的xy位置
hero.moveXY(x, y)
# 搜寻一枚硬币,如果找到就建造一个"fire-trap"
coin = hero.findNearestItem()
if coin:
hero.buildXY("fire-trap", x, y)
while True:
# 为左上方通道调用maybeBuildTrap
maybeBuildTrap(12, 56)
# 下面是右上角的通道。
maybeBuildTrap(68, 56)
# 下面是右下的通道。
maybeBuildTrap(68, 12)
# 下面是左下角的通道。
maybeBuildTrap(12, 12)
金币草地
# 收集每片草地的所有金币。
# 使用旗子在草地间移动。
# 当你准备好放置旗子时点击“提交”
while True:
flag = hero.findFlag()
if flag:
pass # “pass”是一个占位符,它没有任何作用
# Pick up the flag.
hero.pickUpFlag(flag)
else:
# Automatically move to the nearest item you see.
item = hero.findNearestItem()
if item:
position = item.pos
x = position.x
y = position.y
hero.moveXY(x, y)
插旗子
注意仔细看下,我们在移动到某处去捡起东西的时候,是如何调用item.pos.x的
# 在你想要建造陷阱的位置插旗
# 当你没有在建造陷阱的时候,收集金币!
while True:
flag = hero.findFlag()
if flag:
# 我们该如何通过旗子的位置得到 flagX 和 flagY 呢?
# (向下看如何得到物品的 x 和 y)
flagPos = flag.pos
flagX = flagPos.x
flagY = flagPos.y
hero.buildXY("fire-trap", flagX, flagY)
hero.pickUpFlag(flag)
else:
item = hero.findNearestItem()
if item:
itemPos = item.pos
itemX = itemPos.x
itemY = itemPos.y
hero.moveXY(itemX, itemY)
致命追逐
# 收集金币使用旗子来建造陷阱
# 你在这处理这些食人魔
while True:
flag = hero.findFlag()
item = hero.findNearestItem()
if flag:
hero.buildXY("fire-trap", flag.pos.x, flag.pos.y)
hero.pickUpFlag(flag)
elif item:
hero.moveXY(item.pos.x, item.pos.y)