Help With Shine Getter


#1

So I’ve been stuck on the level Shine Getter in the Desert World, and I need some help.
So, I’m not sure what’s wrong with my code, but if anyone could help me out, I would appreciate it.
My code:

> loop:
>      coins = self.findItems()
>      coinIndex = 0
>      while coinIndex > len(coins):
>         coin = coins[coinIndex]
>          if coin.value == 3:
>              self.moveXY(coin.pos.x, coin.pos.y)
>             coinIndex += 1

#2

Your while-loop entails while coinIndex > len(coins):. The problem is, coinIndex is zero, and therefore is never greater then the amount of coins. I don’t suppose you meant while coinIndex < len(coins):?


#3

Then I just get a “Hard Execution Limit of 3 Million”


#4

Your indentations are also a little mixed up. If my assumptions are correct, you only increment coinIndex when you pick up a gold coin. This should not be. You want to loop over all coins.


#5

Just tried it when you find a gold coin, not when you walk over it, and it worked. Thanks for your help


#6

Lol I just got the 100 levels achievement and got 1,000 gems, too. :grinning:


#7

Excuse me, what is wrong with my code?

To grab the most gond quickly, just go after gold coins.

while True:
coins = hero.findItems()
coinIndex = 0

# Wrap this into a loop that iterates over all coins.
while coinIndex < len(coins):
    coin = coins[coinIndex]
    hero.moveXY(coin.pos.x, coin.pos.y)
# Gold coins are worth 3.
if coin.value == 3:
    # Only pick up gold coins.
    hero.moveXY(coin.pos.x, coin.pos.y)
    pass

#8

First, your if conditional statement should be inside your while loop. It appears that it is inside the while True: loop, but not inside the while coinIndex < len(coins): loop where it should be.

Second, you are not incrementing. You must increment coinIndex.