CodeCombat代码全记录(Python学习利器)–安息之云山峰(第四章)代码3[通俗易懂]

CodeCombat代码全记录(Python学习利器)–安息之云山峰(第四章)代码3[通俗易懂]士兵的痛苦之源#机器人炸弹会在被摧毁或是碰到敌人时爆炸

CodeCombat代码全记录(Python学习利器)--安息之云山峰(第四章)代码3[通俗易懂]"

士兵的痛苦之源

# 机器人炸弹会在被摧毁或是碰到敌人时爆炸。
# 分散你的士兵,这样他们就不会一起被炸死。

while True:
    enemies = hero.findEnemies()
    enemy = hero.findNearest(enemies)
    friends = hero.findFriends()
    # 将friends数组中的第一个士兵派向敌人。
    hero.command(friends[0], 'move', enemy.pos)
    # i in range(1, n) 从第二个元素开始索引!
    for i in range(1, len(friends)):
        friend = friends[i]
        # 命令剩下的士兵逃跑!
        hero.command(friend, 'move', {"x": 10, "y": 24})

借刀

来一个调用函数的方法(更好理解)

# 你的英雄不需要在本关参与战斗。
# 命令你的弓箭手集中在火攻敌人。
#定义找到血量最多的敌人(我这里使用的数组的实现方法,在回顾下!)
def findStrongEnemy(enemies):
    strongEnemy = None
    highBlood = 0
    index = 0
    while index < len(enemies):
        enemy = enemies[index]
        index += 1
        if enemy.health > highBlood:
            highBlood = enemy.health
            strongEnemy = enemy
    #hero.say(strongEnemy)
    return strongEnemy
    
while True:
    enemies = hero.findEnemies()
    target = findStrongEnemy(enemies)
    if target:
        friends = hero.findFriends()
        for friend in friends:
            hero.command(friend, "attack", target)

或来个简单语句的

# 你的英雄不需要在本关参与战斗。
# 命令你的弓箭手集中在火攻敌人。
while True:
    strongEnemy = None
    highBlood = 0
    for enemy in hero.findEnemies():
        if enemy and enemy.health > highBlood:
            highBlood = enemy.health
            strongEnemy = enemy
    if strongEnemy and strongEnemy.health > 0:
        for friend in hero.findFriends():
            hero.command(friend, "attack", strongEnemy)
    

维他力量

# 这关会教你怎么定义你自己的函数。
# 放在函数内的代码并不会立刻执行, 而是先保存好, 以备后用.
# 这个函数会让你的英雄收集最近的金币。
def pickUpNearestCoin():
    items = hero.findItems()
    nearestCoin = hero.findNearest(items)
    if nearestCoin:
        hero.move(nearestCoin.pos)

# 这个函数会让你的英雄召唤一个士兵。
def summonSoldier():
    # If hero.gold is greater than the cost of the "soldier":
    if hero.gold > hero.costOf("soldier"):
        # Then summon a "soldier":
        hero.summon("soldier")
    pass

# 这个函数会命令你的士兵攻击最近的敌人
def commandSoldiers():
    for soldier in hero.findFriends():
        enemy = soldier.findNearestEnemy()
        if enemy:
            hero.command(soldier, "attack", enemy)

while True:
    # 在你的循环里,你可以"调用"你在上面定义的函数
    # 下面几行代码会让 "pickUpNearestCoin" 函数里的代码被执行。
    pickUpNearestCoin()
    # 在这里调用 summonSoldier
    summonSoldier()
    # 在这里调用 commandSoldiers
    commandSoldiers()

戒指运送人

# 你必须护送一个强大的魔戒回城研究。
# 我们的目标是要逃脱,不是打仗。有更多食人魔潜伏在周围的山脉!
# 让士兵把农民围在里面!
# 我们给你两个函数来帮助你:

# findSoldierOffset
# 第一个参数 'soldiers'应该是你的士兵阵列。
# 第二个参数'i'是你想找到位置的士兵(在士兵数组中)的索引。
def findSoldierOffset(soldiers, i):
    soldier = soldiers[i]
    angle = i * 360 / len(soldiers)
    return radialToCartesian(5, angle)

# 这个函数做数学运算来确定一个战士应该站的位置。
def radialToCartesian(radius, degrees):
    radians = Math.PI / 180 * degrees
    xOffset = radius * Math.cos(radians)
    yOffset = radius * Math.sin(radians)
    return {"x": xOffset, "y": yOffset}
# 使用 findByType获取一个你的士兵的数组。
peasant = hero.findByType("peasant")[0]


while True:
    #soldiers = hero.findFriends()
    soldiers = hero.findByType("soldier")
    # 使用一个for循环,循环遍历(len(soldiers))。
    for i in range(len(soldiers)):
    # 找到士兵的位置。
        offset = findSoldierOffset(soldiers, i)
    # 将 offset.x和offset.y加到农民的 pos.x和pos.y上。
        x = peasant.pos.x + offset.x
        y = peasant.pos.y + offset.y
    # 命令士兵移动到新位置。
        hero.command(soldiers[i], "move", {"x": x, "y": y})
    # 英雄应跟上农民!
        hero.move({"x": hero.pos.x + 0.2, "y": hero.pos.y})

双生花

# 如果花匠受伤了,双生花会缩小!

def summonSoldiers():
    if hero.gold >= hero.costOf("soldier"):
        hero.summon("soldier")

# 定义函数:commandSoldiers
def commandSoldiers():
    #enemies = hero.findEnemies()
    soldiers = hero.findByType("soldier")
    for soldier in soldiers:
        enemy = soldier.findNearestEnemy()
        if enemy and enemy.health > 0:
            hero.command(soldier,"attack",enemy)

# 定义函数:pickUpNearestCoin
def pickUpNearestCoin():
    coin = hero.findNearest(hero.findItems())
    if coin:
        hero.move(coin.pos)

peasant = hero.findByType("peasant")[0]

while True:
    summonSoldiers()
    commandSoldiers()
    pickUpNearestCoin()

今天的文章CodeCombat代码全记录(Python学习利器)–安息之云山峰(第四章)代码3[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/68065.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注