Stuck on diamond desert [HELP]

``````# 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()
while itemsIndex < len(items):
item = items[itemsIndex]
if valueOverDistance > bestValue:
bestItem = item
bestValue = valueOverDistance(item)
itemsIndex += 1
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)

``````

he doesn’t collect anything

Sorry, but I don’t have that much time because I’m tired. Maybe @Chaboi_3000 or @MunkeyShynes could help you.

oh
thanks
by the way

Hi,
all you need to do is put an argument (something which goes in between the brackets of a function), in this case: item, here:

Otherwise the function valueOverDistance doesn’t have any “item” to compare value with distance.
Hope this helps!

it still says incomplete

``````# 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()
while itemsIndex > len(items):
items = items[itemsIndex]
if valueOverDistance(item) > bestValue:
bestItem = item
bestValue = valueOverDistance()
itemsIndex += 1
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)

``````

Why have you changed this line:

In your first post this line was right, now it’s wrong for the same reason that I said before.
If you change it back to what it was before it will work.

this?

``````bestValue = valueOverDistance(item)
``````

Yeah, in both places.

(that should work)

``````if valueOverDistance(item) > bestValue:
bestItem = item
bestValue = valueOverDistance(item)
itemsIndex += 1
``````

i tried this it doesn’t work

Ok, sorry there are two more things I missed the first time.

1. this:

Look at it carefully, I think you can see it.

1. and this:

This isn’t what was taught in the previous levels, well not quite. (> ----- <)

I’ve tried it now and it works.

im still kinda confused