my code:
def findMostHealth(enemies):
target = None
targetHealth = 0
enemyIndex = 0
while enemyIndex < len(enemies):
enemy = enemies[enemyIndex]
if enemy.health > targetHealth:
target = enemy
targetHealth = enemy.health
enemyIndex += 1
return target
def valueOverDistance(item):
return item.value / hero.distanceTo(item)
# Return the item with the highest valueOverDistance(item)
def findBestItem(items):
bestItem = None
bestValue = 0
itemsIndex = 0
# Loop over the items array.
# Find the item with the highest valueOverDistance()
findMostValueOverDistance
return bestItem
while True:
enemies = hero.findEnemies()
enemy = findMostHealth(enemies)
if enemy and enemy.health > 15:
while enemy.health > 0:
hero.attack(enemy)
else:
coins = hero.findItems()
coin = None
coin = findBestItem(coins)
if coin:
hero.moveXY(coin.pos.x, coin.pos.y)
I strongly suggest that you use the search feature and read previous threads about this level. I was stuck on it for a couple of days myself. Your code needs some work and it’s best for you to do some research to learn what needs to be done.
@SuperSmacker
Thanks. It seems I spend half my life here anyway. LOL.
@Atticus_Black
I found this and thought it might help.
maka
December 21, 2017, 5:32pm
6
Those are good, though we’re replaced ‘self’ with ‘hero’.
i tried those could you check my code and see what I would put for the missing segment
# Claim the coins while defeating the marauding ogres.
def findMostHealth(enemies):
target = None
targetHealth = 0
enemyIndex = 0
while enemyIndex < len(enemies):
enemy = enemies[enemyIndex]
if enemy.health > targetHealth:
target = enemy
targetHealth = enemy.health
enemyIndex += 1
return target
def valueOverDistance(item):
return item.value / hero.distanceTo(item)
# Return the item with the highest valueOverDistance(item)
def findBestItem(items):
bestItem = None
bestValue = 0
itemsIndex = 0
# Loop over the items array.
# Find the item with the highest valueOverDistance()
return bestItem
while True:
enemies = hero.findEnemies()
enemy = findMostHealth(enemies)
if enemy and enemy.health > 15:
while enemy.health > 0:
hero.attack(enemy)
else:
coins = hero.findItems()
coin = None
coin = findBestItem(coins)
if coin:
hero.moveXY(coin.pos.x, coin.pos.y)
i = 0
greatestValue = 0
for item in item:
value = valueOverDistance(item)
# each time you go through the loop, compare the current item's value to the max value.
if value > greatestValue:
value = greatestValue
index = i
# store the index of the item as well, so you can return the index and use it in the main loop to find and collect the item.
# index is i in this case.
i += 1
else:
i += 1
return index