士兵的痛苦之源
# 机器人炸弹会在被摧毁或是碰到敌人时爆炸。
# 分散你的士兵,这样他们就不会一起被炸死。
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