【CodeCombat-Python】边远地区的森林 11~20

来源:互联网 发布:.sit域名说明 编辑:程序博客网 时间:2024/04/19 18:44

11、跃火林中

# 在这关,别碰恶魔石!往其他方向移动避开它们!while True:    evilstone = hero.findNearestItem()    if evilstone:        pos = evilstone.pos        if pos.x == 46:            # 如果恶魔石在右边,走到左边。            hero.moveXY(34, 22)            pass        else:            # 如果恶魔石在左边,走到左边。            hero.moveXY(46, 22)            pass    else:        # If there's no evilstone, go to the middle.        hero.moveXY(40, 22)        pass

这关的提示有一个地方错误了


12、村庄漫游者

这关有开始定义函数

# This defines a function called findAndAttackEnemydef findAndAttackEnemy():    enemy = hero.findNearestEnemy()    if enemy:        hero.attack(enemy)# This code is not part of the function.while True:    # Now you can patrol the village using findAndAttackEnemy    hero.moveXY(35, 34)    findAndAttackEnemy()        # Now move to the right entrance.    hero.moveXY(60,31)    # Use findAndAttackEnemy    findAndAttackEnemy()

13、边远地区交叉口

# 一大波兽人正在到来!# 使用 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()    pass    # 使用 checkAndAttack 函数,并包括 bottomEnemy 变量。    checkAndAttack(bottomEnemy)

14、无敌旋风斩

# 這裡顯示如何定義一個稱為cleaveWhenClose的函式# 函式定義了一個參數稱為targetdef cleaveWhenClose(target):    if hero.distanceTo(target) < 5:        pass        # 把你的攻擊程式碼放在這裡        # 如果旋風斬就緒,對目標施放旋風斬        if hero.isReady("cleave"):            hero.cleave(enemy)        # 否則,直接攻擊目標!        else:            hero.attack(enemy)# 這裡的程式碼不是函式的一部份.while True:    enemy = hero.findNearestEnemy()    if enemy:        # 記得在cleaveWhenClose函式裡面,我們改用target作為指向敵人的變數.        cleaveWhenClose(enemy)

15、朋友与敌人

# 农民和士兵聚集在森林。# 命令农民战斗,苦工远离!while True:    friend = hero.findNearestFriend()    if friend:        hero.say("To battle, " + friend.id + "!")    # 寻找最近的敌人,然后让他们滚蛋    enemy = hero.findNearestEnemy()    if enemy:        hero.say("ByeBye,"+enemy.id+"!")

16、巫师之门

# 去找Laszlo并取得他的密码数字.hero.moveXY(30, 13)las = hero.findNearestFriend().getSecret()# 向 Laszlo 的数字中加7就能得到 Erzsebet的号码# 去找Erzsebet并告诉她魔法数字.erz = las + 7hero.moveXY(17, 26)hero.say(erz)# 将 Erzsebet 的数字除以 4 得到 Simoyi 的数字。# 去找Simonyi并告诉他数字.sim = erz / 4hero.moveXY(30, 39)hero.say(sim)# 将 Simonyi 的数字乘以 Laszlo 的数字得到 Agata 的数字。# 去找Agata并告诉她数字.aga = sim * lashero.moveXY(43, 28)hero.say(aga)

17、宝库追逐战

# 跟随硬币的轨迹来到红色 X 标记的出口while True:    # 这能找到最近的敌人。    item = hero.findNearestItem()    if item:        # 这将物品的 pos,就是坐标,存储在变量中。        itemPosition = item.pos        # 将物品的 X 和 Y 坐标放进变量。        itemX = itemPosition.x        itemY = itemPosition.y        # 现在,使用moveXY来移动到itemX和itemY:        hero.moveXY(itemX, itemY)

18、看不见的距离

# 你的任务是告诉他兽人的距离。# 这个函数寻找最近的敌人,并返回距离。# 假如没有敌人,函式会回传0.def nearestEnemyDistance():    enemy = hero.findNearestEnemy()    result = 0    if enemy:        result = hero.distanceTo(enemy)    return resultwhile True:    # 呼叫 nearestEnemyDistance() 和    # 储存结果到 enemyDistance变数里头.    enemyDistance = nearestEnemyDistance()    # 假如 enemyDistance 大于0:    if enemyDistance > 0 :        # 说出 enemyDistance变数的值.        hero.say(enemyDistance)

19、困兽之斗

# 你掉进陷阱里了!别动!你会受伤的!# 这个函数检查敌人是否再攻击范围。def inAttackRange(enemy):    distance = hero.distanceTo(enemy)    # 几乎所有的剑攻击距离都是3.    if distance <= 3:        return True    else:        return False# 只有兽人在范围内才攻击他们.while True:    # 找到最近的敌人,并将其储存在一个变量中。    enemy = hero.findNearestEnemy()        # 调用 inAttackRange(enemy),将 enemy 作为参数    # 把结果保存于 “canAttack” 变量中    canAttack = inAttackRange(enemy)    # 假如储存在 canAttack的结果是 True, 然后下手!    if canAttack == True:        hero.attack(enemy)        if hero.isReady("cleave"):            hero.cleave(enemy)            pass    pass

20、盐碱地(难度3(可能是我自己理解错了))

没有尝试其他代码解决,这关卡了一阵子。

# 兽人正在攻击附近的殖民地!# 小心,兽人在地上放了毒药。# 收集硬币并打败兽人,但是要避开毛怪(burls)和毒药!while True:    enemy = hero.findNearestEnemy()    if enemy.type == "munchkin" or enemy.type == "thrower":        hero.attack(enemy)    item = hero.findNearestItem()    # 检查物品类型,确保英雄不会捡起毒药!    # 寻找类型:'gem' 和 'coin'    if item.type == "gem" or item.type == "coin":        if item.type == "coin":      #这一段代码可以不用,注释掉依然会找金币,把coin换成gem后,hero也不会走向毒药,这点让我很郁闷。            coinP = item.pos            coinX = coinP.x;            coinY = coinP.y;            hero.moveXY(coinX, coinY)




原创粉丝点击