Python——极客战记codecombat关卡代码

kithgard地牢

地牢

 #向宝石进发。
 #小心尖刺!
 #在下面输入你的代码,完成后点击运行。
hero.moveRight()
hero.moveDown()
hero.moveRight()

深藏的宝石

# 利用你的移动命令收集所有宝石。

hero.moveRight()
hero.moveDown()
hero.moveUp()
hero.moveUp()
hero.moveRight()

幽灵守卫

# 避开食人魔的视线,收集宝石。
hero.moveRight()
hero.moveUp()
hero.moveRight()
hero.moveDown()
hero.moveRight()

真实姓名

# 抵御 Brak 和 Treg!
# 你必须攻击小食人魔两次。

hero.moveRight()
hero.attack("Brak")
hero.attack("Brak")
hero.moveRight()
hero.attack("Treg")
hero.attack("Treg")

高举之剑

# 打败食人魔
# 记住,每个攻击两次。

hero.attack("Rig")
hero.attack("Rig")
hero.attack("Gurt")
hero.attack("Gurt")
hero.attack("Ack")
hero.attack("Ack")

焰中舞动

# 代码通常按编写顺序执行。
# 循环会多次重复一个代码块。
# 按Tab或4个空格,把移动指令缩进到循环内部。

while True:
    hero.moveRight()
    # 在这里给循环里加 moveLeft 命令。
    hero.moveLeft()

KITHMAZE二度历险

# 使用while-true循环穿越迷宫!

while True:
    hero.moveRight()
    # 再键入3条移动命令来完成这个迷宫:
    hero.moveUp()
    hero.moveRight()
    hero.moveDown()

老对手

# 你可以像名牌那样使用变量

enemy1 = "Kratt"
enemy2 = "Gert"
enemy3 = "Ursa"
# 你可以像名牌那样使用变量

enemy1 = "Kratt"
enemy2 = "Gert"
enemy3 = "Ursa"

hero.attack(enemy1)
hero.attack(enemy1)
hero.attack(enemy2)
hero.attack(enemy2)
hero.attack(enemy3)
hero.attack(enemy3)
##########用下面的可能更方便#################
# while True:
#    enemy = hero.findNearestEnemy()
#    if enemy:
#        hero.attack(enemy)
###########################################

名称大师

# 你的英雄不知道这些敌人的名字!
# 这眼镜给了你 “findNearestEnemy” 寻找最近敌人的能力。
while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        hero.attack(enemy)

矮人之乱

# 在 while true循环里,使用 findNearestEnemy() 并攻击!
while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        hero.attack(enemy)

KITHMAZE最终历险

# 使用while-true循环移动并攻击目标

while True:
    hero.moveRight()
    hero.moveUp()
    enemy = hero.findNearestEnemy()
    hero.attack(enemy)
    hero.attack(enemy)
    hero.moveRight()
    hero.moveDown()
    hero.moveDown()
    hero.moveUp()

KithGard之门

# 建造三个围栏来阻挡食人魔!

hero.moveDown()
hero.buildXY("fence", 36, 34)
hero.buildXY("fence", 36, 30)
hero.buildXY("fence", 36, 27)
while True:
    hero.moveRight()

边地森林

平原森林保卫战

# 在标记上建造两个围栏保护村民
# 把鼠标放在地图上得到X,Y坐标
hero.buildXY("fence", 40, 52)
hero.buildXY("fence", 40, 20)

羊肠小道

# 到小路的尽头去,并在那儿修一个栅栏。
# 利用你的 moveXY(x, y) 函数。


# 这是路径的第一个节点。
hero.moveXY(36, 59)
# 移动到路径的第二个节点。
hero.moveXY(37, 13)
# 移动到路径的第三个节点
hero.moveXY(73, 63)
# 用盾牌提供保护
while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        hero.shield()
# 建造栅栏抵挡食人魔。
hero.buildXY("fence", 72, 25)

林地小屋

# 通过林地,务必留意危险!
# 这些森林小屋中可能有食人魔!

hero.moveXY(19, 33)
enemy = hero.findNearestEnemy()
# if语句会检查某变量是否有食人魔。
if enemy:
    hero.attack(enemy)
    hero.attack(enemy)

    pass

hero.moveXY(49, 51)
enemy = hero.findNearestEnemy()
if enemy:
    # 攻击这里的敌人:
    hero.attack(enemy)
    hero.attack(enemy)

    # pass不做任何事情,它只负责结束if语句
    pass

hero.moveXY(58, 14)
enemy = hero.findNearestEnemy()
# 使用if语句检查敌人是否存在:
if enemy:
    # 如果敌人存在,就攻击它:
    hero.attack(enemy)
    hero.attack(enemy)
    pass

if的盛宴

# 在食人魔的营地中打败它们!

while True:
    enemy = hero.findNearestEnemy()
    # 使用一个 “if” 语句去检查是否有敌人存在:
    if enemy:

        # 攻击敌人,如果存在的话:
        hero.attack(enemy)
        hero.attack(enemy)

背靠背

# 待在中间防守!

while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        # 亦或主动出击...
        hero.attack(enemy)
        pass
    else:
        # 亦或回到你的阵地防守。
        hero.moveXY(40, 34)
        hero.say("爸爸回来了!")
        pass

森林劈斩者

# 尽可能经常使用你的新技能“cleave”

hero.moveXY(23, 23)
while True:
    enemy = hero.findNearestEnemy()
    if hero.isReady("cleave"):
        # 用“Cleave”干掉敌人!
        hero.cleave(enemy)
        pass
    else:
        # 否则(如果“cleave”还没准备好),就用你的普通攻击
        hero.attack(enemy)
        pass

边地僵局

# 矮人正在攻击!
# 攻击会有规律的一波波袭来。
# 可以的话,使用劈斩来清理大量敌人。

while True:
    enemy = hero.findNearestEnemy()
    # 使用带有‘isReady’的if语句来检查 “cleave”
    if hero.isReady("cleave"):
        # 劈斩!
        hero.cleave(enemy)
        pass
    # 否则,如果 cleave 还没准备好的话:
    else:
        # 攻击最近的食人魔!
        hero.attack(enemy)
        pass

测距仪

# 食人魔正在森林中巡视!
# 使用distanceTo方法找到敌人在哪。
# 说出与每个敌人的距离,告诉大炮向哪开火!

enemy1 = "Gort"
distance1 = hero.distanceTo(enemy1)
hero.say(distance1)

enemy2 = "Smasher"
distance2 = hero.distanceTo(enemy2)
# 说出distance2变量!
hero.say(distance2)
# 找到并说出与剩余敌人之间的距离:
# 不要攻击友方!
friend3 = "Charles"
pass
enemy4 = "Gorgnub"
distance4 = hero.distanceTo(enemy4)
hero.say(distance4)

while True:
    enemy = hero.findNearestEnemy()
    distance = hero.distanceTo(enemy)
    if distance < 10:
        # 如果他们与农民太近,就攻击他们
        # 当然,你也可以不用放大招
        if hero.isReady("cleave"):
            hero.cleave(enemy)
            pass
        else:
            hero.attack(enemy)
        pass
    # 否则的话,呆在农民旁边!使用else
    else:
        hero.moveXY(40, 38)

发狂的矮人

# 又一个宝箱等待英雄打开!
# 攻击宝箱来打开它。
# 有些食人魔矮人可不会呆呆地站着挨打!
# 当食人魔离你太近时,你得学着保护你自己

while True:
    enemy = hero.findNearestEnemy()
    distance = hero.distanceTo(enemy)
    if hero.isReady("cleave"):
        # 如果劈斩就绪,优先使用劈斩:
        if hero.isReady("cleave"):
            hero.cleave(enemy)
            pass
    elif distance < 5:
        # 攻击靠近并离你最近的食人魔矮人
        hero.attack(enemy)
        pass
    else:
        # 否则,尝试打开宝箱:
        # Use the name of the chest to attack: "Chest".
        hero.attack("Chest")
        pass

跃火林中

# 在这关,别碰恶魔石!往其他方向移动避开它们!
while True:
    evilstone = hero.findNearestItem()
    if evilstone:
        pos = evilstone.pos
        if pos.x == 34:
            # 如果恶魔石在左边,走到右边。
            hero.moveXY(46, 22)
            pass
        else:
            # 如果恶魔石在右边,走到左边。
            hero.moveXY(34, 22)
            pass
    else:
        # 如果没有恶魔石,那就去到中间。
        hero.moveXY(40, 22)
        pass

乡村漫游者

# 这定义了findAndAttackEnemy函数
def findAndAttackEnemy():
    enemy = hero.findNearestEnemy()
    if enemy:
        hero.attack(enemy)

# 这段代码不是函数的一部分。
while True:
    # 现在你可以使用findAndAttackEnemy在村子里巡逻
    hero.moveXY(35, 34)
    findAndAttackEnemy()

    # 现在移动到右侧入口。
    hero.moveXY(60, 31)
    # 使用findAndAttackEnemy
    findAndAttackEnemy()

边地之叉

# 一大波食人魔正在到来!
# 使用 checkAndAttack 函数让代码易读。

# 这个函数有一个参数。
# 参数是一种给函数传递信息的方式。
def checkAndAttack(target):
    # target参数只是一个变量!
    # 它包含了函数调用时的参数。
    if target:
        hero.attack(target)
    hero.moveXY(43, 34)

while True:
    hero.moveXY(58, 52)
    topEnemy = hero.findNearestEnemy()
    checkAndAttack(topEnemy)
    # 移动到底部的X标记处。
    hero.moveXY(58, 16)
    # 创建名为 bottomEnemy 的变量,寻找最近敌人。
    bottomEnemy = hero.findNearestEnemy()
    checkAndAttack(bottomEnemy)
    # 使用 checkAndAttack 函数,并使用 bottomEnemy 变量。

交给劈斩者

# 一大波食人魔正在到来!
# 使用 checkAndAttack 函数让代码易读。

# 这个函数有一个参数。
# 参数是一种给函数传递信息的方式。
def checkAndAttack(target):
    # target参数只是一个变量!
    # 它包含了函数调用时的参数。
    if target:
        hero.attack(target)
    hero.moveXY(43, 34)

while True:
    hero.moveXY(58, 52)
    topEnemy = hero.findNearestEnemy()
    checkAndAttack(topEnemy)
    # 移动到底部的X标记处。
    hero.moveXY(58, 16)
    # 创建名为 bottomEnemy 的变量,寻找最近敌人。
    bottomEnemy = hero.findNearestEnemy()
    checkAndAttack(bottomEnemy)
    # 使用 checkAndAttack 函数,并使用 bottomEnemy 变量。

友人和敌人

# 农民和士兵聚集在森林。
# 命令农民战斗,苦工远离!

while True:
    friend = hero.findNearestFriend()
    if friend:
        hero.say("To battle, " + friend.id + "!")
    # 寻找最近的敌人,然后让他们滚蛋
    enemy = hero.findNearestEnemy()
    if enemy:
        hero.say("Fuck you away!," + enemy.id + "!")

巫师之门

# Move to 'Laszlo' and get his secret number.
hero.moveXY(30, 13)
las = hero.findNearestFriend().getSecret()

# 向 Laszlo 的数字中加7就能得到 Erzsebet的号码
# Move to 'Erzsebet' and say her magic number.
erz = las + 7
hero.moveXY(17, 26)
hero.say(erz)

# 将 Erzsebet 的数字除以 4 得到 Simoyi 的数字。
# Go to 'Simonyi' and tell him his number.
sim = erz / 4
hero.moveXY(30, 39)
hero.say(sim)
# 将 Simonyi 的数字乘以 Laszlo 的数字得到 Agata 的数字。
# Go to 'Agata' and tell her her number.
aga = sim * las
hero.moveXY(41, 26)
hero.say(aga)

未知的距离

# 你的任务是告诉他兽人的距离。

# 这个函数寻找最近的敌人,并返回距离。
# If there is no enemy, the function returns 0.
def nearestEnemyDistance():
    enemy = hero.findNearestEnemy()
    result = 0
    if enemy:
        result = hero.distanceTo(enemy)
    return result

while True:
    # Call nearestEnemyDistance() and
    # save the result in the variable enemyDistance.
    enemyDistance = nearestEnemyDistance()
    # If the enemyDistance is greater than 0: 
    if enemyDistance:
        # Say the value of enemyDistance variable.
        hero.say(enemyDistance)

金币屑

# 跟随硬币的轨迹来到红色 X 标记的出口

while True:
    # 这能找到最近的敌人。
    item = hero.findNearestItem()
    if item:
        # 这将物品的 pos,就是坐标,存储在变量中。
        itemPosition = item.pos
        # 将物品的 X 和 Y 坐标放进变量。
        itemX = itemPosition.x
        itemY = itemPosition.y
        # Now, use moveXY to move to itemX and itemY:
        hero.moveXY(itemX, itemY)

返回荆棘农场

# 这个函数 “maybeBuildTrap” 定义了两个参数
def maybeBuildTrap(x, y):
    # 使用x和y作为移动的坐标。
    hero.moveXY(x, y)
    enemy = hero.findNearestEnemy()
    if enemy:
        pass
        # 使用 buildXY 在特定 x 和 y 处建造 "fire-trap".
        hero.buildXY("fire-trap", x, y)
while True:
    # 这会调用 maybeBuildTrap,并使用上方入口的坐标。
    maybeBuildTrap(43, 50)

    # 下面在左侧入口使用maybeBuildTrap!
    maybeBuildTrap(25, 35)
    # 在底部入口处使用“maybeBuildTrap” !
    maybeBuildTrap(43, 20)

金币草地

# 收集每片草地的所有金币。
# 使用旗子在草地间移动。
# 当你准备好放置旗子时点击“提交”

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)

插旗子

# 在你想要建造陷阱的位置插旗
# 当你没有在建造陷阱的时候,收集金币!

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()
    enemy = hero.findNearestEnemy()

    if flag:
        # 去拔旗子。
        hero.pickUpFlag(flag)
        hero.say("我应该去把旗子拔起来。")
    elif enemy:
        # 仅当敌人的距离小于10米时才攻击。
        distance = hero.distanceTo(enemy)
        if distance < 10:
            if hero.isReady("cleave"):
                hero.cleave(enemy)
            else:
                hero.attack(enemy)

通信尸体

# 你可以使用旗子来选择不同的策略
# 在这关,绿色旗子代表你要移动到旗子处。
# 遇到黑旗就意味着你要在旗子那使用cleave
# 医生会在红X处治疗你

while True:
    green = hero.findFlag("green")
    black = hero.findFlag("black")
    nearest = hero.findNearestEnemy()

    if green:
        hero.pickUpFlag(green)
    elif black and hero.isReady("cleave"):
        hero.pickUpFlag(black)
        # 劈斩!
        hero.cleave(nearest)
    elif nearest and hero.distanceTo(nearest) < 10:
        # 攻击!
        hero.attack(nearest)
        pass

丰富的觅食

# 使用 if 和 else if 来处理任何情况
# 放置它来防御敌人,收集金币
# 确保你从物品商店买到伟大的盔甲,建议400点以上的健康。

while True:
    flag = hero.findFlag()
    enemy = hero.findNearestEnemy()
    item = hero.findNearestItem()

    if flag:
        # 当我发现旗子的时候发生了什么?
        hero.pickUpFlag(flag)
    elif enemy:
        # 当我找到敌人的时候发生了什么?
        if hero.isReady("cleave"):
            hero.cleave(enemy)
        else:
            hero.attack(enemy)
    elif item:
        # 当我找到一个物品的时候,发生了什么?
        hero.moveXY(item.pos.x, item.pos.y)

围攻STONEHOLD

# 这里可能需要你升级一下装备才能打赢
# 帮助你的朋友击败索科塔派出的手下。
# 你需要更好的装备和策略去赢得战斗。
# 标记可能有用,不过这取决于你——要有创造性哦!
# 在围栏后有位医生。移动到 X 处得到治疗!

while True:
    # 创建旗子标识
    flag = hero.findFlag("green")
    # 发现周边敌人
    enemy = hero.findNearestEnemy()
    # 到达旗子的位置
    if flag:
        hero.pickUpFlag(flag)
    if enemy:
        if hero.isReady("cleave"):
            hero.cleave(enemy)
        else:
            hero.attack(enemy)

沙漠

强壮的沙牦牛

# 当牦牛靠近时向右移动10米来躲避
# 躲避4头牦牛完成此关

while True:
    # 使用你的灵石获取你当前的 x 和 y 位置。
    x = hero.pos.x
    y = hero.pos.y

    # 找到最近的耗牛。
    yak = hero.findNearestEnemy()

    # 使用 if 仅仅当牦牛少于10米距离的时候。
    if hero.distanceTo(yak) < 10:
        # 向右移动,添加10到你的x位置。
        newX = x + 10
        # 使用 moveXY 来移动!
        hero.moveXY(newX, y)
        pass

绿洲

# 向绿洲移动
# Move left to avoid nearby yaks.
while True:
    x = hero.pos.x
    y = hero.pos.y
    enemy = hero.findNearestEnemy()
    if enemy and hero.distanceTo(enemy) < 10:
        # 通过在你的X坐标上减去10来移动到左边
        newX = x - 10
        # Use moveXY to move to the new x, y position.
        hero.moveXY(newX, y)
        pass
    else:
        # 通过在你的X坐标上加上10来移动到右边
        plusX = x + 10
        # Use moveXY to move to the new x, y position.
        hero.moveXY(plusX, y)
        pass

盆地的践踏

# **如果发现代码执行有问题,可能需要换一个浏览器再试试**,别问我怎么知道的,我快被牛顶死了!!!
# Keep moving right, but adjust up and down as you go.

while True:
    enemy = hero.findNearestEnemy()
    xPos = hero.pos.x + 5
    yPos = 17

    if enemy:
        # Adjust y up or down to get away from yaks.
        if enemy.pos.y > hero.pos.y:
            # If the Yak is above you, subtract 3 from yPos.
            yPos = yPos - 3
            pass
        elif enemy.pos.y < hero.pos.y:
            # If the Yak is below you, add 3 to yPos.
            yPos = yPos + 3
            pass
    hero.moveXY(xPos, yPos)

萨文路

# 可能需要升级一下装备!!!
# 到达绿洲。小心新的敌人:食人魔侦察兵!
# 通过添加你当前的X位置和Y位置以向上向右走

while True:
    # If there's an enemy, attack.
    enemy = hero.findNearestEnemy()
    if enemy:
        if hero.isReady("cleave"):
            hero.cleave(enemy)
        else:
            hero.attack(enemy)
    else:
        xPos = hero.pos.x
        yPos = hero.pos.y
        # Else, keep moving up and to the right. 
        xPos = xPos + 5
        yPos = yPos +5
        hero.moveXY(xPos, yPos)
    pass

十字路口

# 使用  fire-trap 打败进攻的食人魔

while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        # If the enemy is to the left of the hero:
        if enemy.pos.x < hero.pos.x:
            # 如果敌人从左边进攻,在左边建一个fire-trap(火焰陷阱)
            hero.buildXY("fire-trap", 25, 34)
            pass
        # If the enemy is to the right of the hero:
        elif enemy.pos.x > hero.pos.x:
            # 如果敌人从右边进攻,在右边建一个fire-trap(火焰陷阱)
            hero.buildXY("fire-trap", 55, 34)
            pass
        # If the enemy is below the hero:
        elif enemy.pos.y < hero.pos.y:
            # 如果敌人从下边进攻,在下边建一个fire-trap(火焰陷阱)
            hero.buildXY("fire-trap", 40, 19)
            pass
        # If the enemy is above the hero:
        elif enemy.pos.y > hero.pos.y:
            # 如果敌人从上边进攻,在上边建一个fire-trap(火焰陷阱)
            hero.buildXY("fire-trap", 40, 49)
            pass
    # Move back to the center.
    hero.moveXY(40, 34)

雷蹄

# 到达绿洲,
# 用栅栏引导砂牦牛到你去的地方

while True:
    yak = hero.findNearestEnemy()
    if yak:
        # 如果它的 y 值大于你的,那么耗牛在你前面
        if yak.pos.y > hero.pos.y:
            # 如果耗牛在你前面,在它后面10米建立一个栅栏
            hero.buildXY("fence", yak.pos.x, yak.pos.y - 10)
        else: 
            hero.buildXY("fence", yak.pos.x, yak.pos.y + 10)
            # 如果耗牛在你后面,在它前面10m 建立一个栅栏

        pass
    else:
        # 向右移动10走向绿洲
        hero.moveXY(hero.pos.x + 10, hero.pos.y)
        pass

操作“杀鹿”

# Lure the ogres into a trap. These ogres are careful.
# They will only follow if the hero is injured.

# This function checks the hero's health 
# 并返回一个布尔型(Boolean)的值。
def shouldRun():
    if hero.health < hero.maxHealth / 2:
        return True
    else:
        return False

while True:
    # Move to the X only if shouldRun() returns True
    enemy = hero.findNearestEnemy()
    value = shouldRun()
    if value:
        hero.moveXY(75, 37)
    # Else, attack!
    else:
        if hero.isReady("cleave") and hero.distanceTo(enemy) < 5:
            hero.cleave(enemy)
        else:
            hero.attack(enemy)

医疗注意

# 当你生命值少于一半时,请求医疗人员的治疗。

while True:
    currentHealth = hero.health
    # 我的装备不好,就改动了一下零界值
    healingThreshold = (hero.maxHealth * 4) / 5
    # 如果你当前的健康值少于下限,
    # move to the healing point and say, "heal me".
    # 否则的话,攻击。你需要战斗的更狠点!
    enemy = hero.findNearestEnemy()
    if currentHealth > healingThreshold:
        if enemy:
            distance = hero.distanceTo(enemy)
            if hero.isReady("cleave") and distance < 5:
                hero.cleave(enemy)
            else:
                hero.attack(enemy)
    else:
        hero.moveXY(65, 46)
        hero.say("heal me")

跟上时间

# 使用你的新技能来选择你要做什么 hero.time

while True:
    # 需要买一件衣服来抵挡伤害!!!
    # 如果是头十秒,进攻。
    if hero.time < 10:
        enemy = hero.findNearestEnemy()
        if enemy:
            distance = hero.distanceTo(enemy)
            if hero.isReady("cleave") and distance < 9:
                hero.cleave(enemy)
            else:
                hero.attack(enemy)
        pass
    # 反之,如果是前35秒,收集金币。
    elif hero.time < 35:
        coin = hero.findNearestItem()
        if coin:
            hero.moveXY(coin.pos.x, coin.pos.y)
        pass
    # 后35秒,加入救助。
    else:
        enemy = hero.findNearestEnemy()
        if enemy:
            distance = hero.distanceTo(enemy)
            if hero.isReady("cleave") and distance < 9:
                hero.cleave(enemy)
            else:
                hero.attack(enemy)
        pass

囤积金币

# 收集25金币,然后告诉 Naria 总数
# 当金币总数大于25,使用 break 来停止收集金币。

totalGold = 0
while True:
    coin = hero.findNearestItem()
    if coin:
        # 捡起金币
        hero.moveXY(coin.pos.x, coin.pos.y)
        # 将金币的价值加进 totalGold.(查看帮助了解更多.)
        # 使用以下方法得到它的价值::  coin.value
        totalGold += coin.value
        pass
    if totalGold >= 25:
        # 这会中断循环并且执行循环下面的语句
        # The loop ends, code after the loop will run.
        break

# 完成收集金币!
hero.moveXY(58, 33)
# 去告诉 Naria 你收集了多少金币。
hero.say("你好 Naria, 我收集了 " + totalGold + " 枚金币")

诱饵钻

# 我们在测试一个新的战斗单位:诱饵。
# 创建4个诱饵,然后汇报给 Naria

decoysBuilt = 0
while True:
    coin = hero.findNearestItem()

    if coin:
        # 掠夺金币!
        hero.moveXY(coin.pos.x, coin.pos.y)
        pass
    # 每个诱饵消费25个金币。
    # 让它知道当你有超过25个金币的时候
    if hero.gold >= 25:
        # buildXY a "decoy"
        hero.buildXY("decoy", hero.pos.x, hero.pos.y)
        # 当你一直走的时候,保持统计你创建的诱饵的数量。
        decoysBuilt += 1
    if decoysBuilt == 4:
        # 当你创建了4个诱饵时跳出循环
        break
        pass

hero.say("完成创建诱饵!")
hero.moveXY(14, 36)
# 去找 Naria 并告诉她你创建了多少个诱饵。
hero.say("I built " + decoysBuilt +' decoies!')

复查

# 第一点,打败6位ogres~
# Then collect coins until you have 30 gold.

# 变量用来对ogres计数
defeatedOgres = 0

# 没打败6位ogres,就继续打
while defeatedOgres < 6:
    enemy = hero.findNearestEnemy()
    if enemy:
        hero.attack(enemy)
        defeatedOgres += 1
    else:
        hero.say("Ogres!")

# Move to the right side of the map.
hero.moveXY(49, 36)

# 钱没攒够30块,就继续捡
while hero.gold < 30:
    # 寻找并收集金币
    coin = hero.findNearestItem()
    hero.moveXY(coin.pos.x, coin.pos.y)
    # 去掉这行 say()。
    # hero.say("我应该收集金币!")

# 移动到出口。
hero.moveXY(76, 32)

沙漠战役

# while循环重复直到条件为否。
# 得去提升自己的护甲

ordersGiven = 0
while ordersGiven < 5:
    # 在站场上移动和排列你的盟友。 (如果你是直接在他们面前,他们只能听到你的。)
    hero.moveXY(hero.pos.x, hero.pos.y - 10)
    # Order your ally to "Attack!" with hero.say
    # They can only hear you if you are on the X.
    hero.say("Attack!")
    # Be sure to increment ordersGiven!
    ordersGiven += 1

while True:
    enemy = hero.findNearestEnemy()
    # 当你下达完命令,立即加入战斗!
    maxhealth = hero.maxHealth
    if enemy:
        distance = hero.distanceTo(enemy)
        if hero.isReady("cleave") and distance < 9:
            hero.cleave(enemy)
        else:
            hero.attack(enemy)
        if hero.health < hero.maxHealth / 2:
            hero.moveXY(10, 34)

尘埃

# 使用循环直到你有足够的击杀10个芒奇金人 

attacks = 0
while attacks < 10:
    # 攻击最近的敌人!
    enemy = hero.findNearestEnemy()
    if enemy:
        if hero.isReady("cleave"):
            hero.cleave(enemy)
        else:
            hero.attack(enemy)
    # Incrementing means to increase by 1.
    # 增加你的攻击统计量。
    attacks += 1

# 当你完成后,撤退到伏击点。
hero.say("I should retreat!") #∆ Don't just stand there blabbering!
hero.moveXY(79, 33)

别冲过去,安静点

# Dodge the cannons and collect 8 gems.
# Watch out, cannons are ready to fire!
# 以一个特殊的方式缓慢移动去迷惑敌人

# This function returns a value from 0 to 30 (0 <= n < 30)
def mod30(n):
    if n >= 30:
        return n - 30
    else:
        return n

# 这一功能将会返回一个从0到40的值
def mod40(n):
    # 使用一个 “if” 语句去返回正确的值
    if n >= 40:
        return n - 40
    else:
        return n

# You don't need to change the following code:
while True:
    time = hero.time
    x = mod30(time) + 25
    y = mod40(time) + 10
    hero.moveXY(x, y)

ZIG ZAG ANG ZOOM

# 从死亡峡谷逃出!
# 使用真正的求余函数走出Z字形路线。

# This function returns a value from 0 to 15:
def mod15(n):
    while n >= 15:
        n -= 15
    return n

# 这个函数应该会反馈一个从0到9的值
def mod9(n):
    # 在返回前使用 while 循环修改参数。
    while n > 9:
        n -= 9
    return n

# Don't change the following code:
while True:
    time = hero.time
    if time < 30:
        y = 10 + 3 * mod15(time)
    else:
        y = 20 + 3 * mod9(time)
    x = 10 + time
    hero.moveXY(x, y)

猜你喜欢

转载自blog.csdn.net/Geoffrey_Zflyee/article/details/80205988