Play Home Contribute Github Join Us! Discourse Staff Members Github Contribution Guides Team

Run for gold(Game Dev 2)

Hi all, I’m having trouble with a Game Dev 2 level called Run For Gold here is my code:

# Generate randomly placed treasures and destroy them later.

# This spawns an item with lifetime at a random point.
def spawnValuable(itemType, lifetime):
    x = game.randomInteger(12, 68)
    y = game.randomInteger(12, 56)
    item = game.spawnXY(itemType, x, y)
    item.destroyTime = game.time + lifetime

# This spawns the treasure set.
def spawnTreasures():
    spawnValuable("bronze-coin", 6)
    spawnValuable("silver-coin", 5)
    spawnValuable("gold-coin", 4)
    spawnValuable("gem", 2)

# The event handler for items.
def onSpawn(event):
    item = event.target
    while True:
        # If game time is greater than item destroyTime: 
        if item.destroyTime < game.time:
            # Call item's destroy() method:
            item.destroy()
        
game.setActionFor("bronze-coin", "spawn", onSpawn)
game.setActionFor("silver-coin", "spawn", onSpawn)
game.setActionFor("gold-coin", "spawn", onSpawn)
game.setActionFor("gem", "spawn", onSpawn)

# Game settings, goals and UI.
game.spawnTime = 0
game.spawnInterval = 3
game.score = 0
if not db.get("topScore"):
    db.set("topScore", 0)
ui.track(game, "time")
ui.track(game, "score")
ui.track(db, "topScore")
goal = game.addManualGoal("Collect at least 50 gold in 30 seconds.")

# The player setup.
player = game.spawnPlayerXY("captain", 40, 34)
player.maxSpeed = 25

def onCollect(event):
    item = event.other
    # If the item has a "value" property:
    if item and item.value:
        # Increase the game score by item's value:
        game.score += item.value


player.on("collect", onCollect)

# This checks timers for treasure spawning.
def checkSpawns():
    # If game.time is greater than game.spawnTime:
    if game.time > game.spawnTime:
        # Call spawnTreasures to create more items.
        spawnTreasures
        # Increase game.spawnTime by game.spawnInterval:
        game.spawnTime + game.spawnInterval
    pass

# This checks the goal state.
def checkGoal():
    if game.score >= 50:
        game.setGoalState(goal, True)
    else:
        game.setGoalState(goal, False)

# This checks the game state.
def checkGameOver():
    if game.time > 30:
        checkGoal()
        db.set("topScore", game.score)

while True:
    checkSpawns()
    checkGameOver()

For some reason, it doesn’t spawn any “Valuable” howsoever. I’ve been changing the code for AGES now but it still won’t work and even if I don’t change it, guess what… :partying_face:it still doesn’t work

:sob: :sob::sob::sob:

Change that so that it only checks if item.value. Then, hit play and move to the item as fast as possible. Aim for gems, then gold coins, then silver, then copper. Gems have the highest value, so they will help you the most. Click on the item, and your hero will move there.

Yes I know how to move but thank you for the tip

wait but still no items appear why?

This is the section causing you trouble. Anytime you call a function, you need the () at the end. Also, to increase a variable, you need to use the = to assign the new amount, in this case +=.

        spawnTreasures  # make a proper function
        # Increase game.spawnTime by game.spawnInterval:
        game.spawnTime + game.spawnInterval # assign the new amount with proper operator

[/quote]

ok thank you I will try that out

Thank you for helping but no gold is spawning could you help me find where the error is?

or "gold coin"s and I have tried many solutions

Nevermind everyone this level is solved I solved it