CodeCombat代码全记录(Python学习利器)--边地森林(第二章)代码14

返回荆棘农场 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)
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值