This site requires JavaScript, please enable it in your browser!
Greenfoot back
ProgrammingPanda
ProgrammingPanda wrote ...

2017/5/18

How do I add a visible timer that counts down?

ProgrammingPanda ProgrammingPanda

2017/5/18

#
Hi, I'd like to add a timer that is visible on screen and counts down for 60 seconds and then stops the program if it has expired. I modified the crab & worm example and made it into a 2 player game. Here's my Level (world subclass) code in case you need it:
import greenfoot.*;

public class Level extends World
{    
    public void act() {
    }
    
    public Level()
        {    
        super(1200, 600, 1); //  erzeugt eine neue Welt mit 1200x600 Zellen mit einer Zellengrösse von 1x1 Pixeln.
        prepare(); // erzeugt eine Grundsituation mit 2 Playern, 2 Enemy und 6 Victims
        }

    private void prepare() 
    {    
        addObject(new Player1(), 300, 300);
        addObject(new Player2(), 900, 300);
        addObject(new Enemy(), 100, 100);
        addObject(new Enemy(), 1100, 500); 
        addObject(new Victim(), Greenfoot.getRandomNumber(1100), Greenfoot.getRandomNumber(500));
        addObject(new Victim(), Greenfoot.getRandomNumber(1100), Greenfoot.getRandomNumber(500));
        addObject(new Victim(), Greenfoot.getRandomNumber(1100), Greenfoot.getRandomNumber(500));
        addObject(new Victim(), Greenfoot.getRandomNumber(1100), Greenfoot.getRandomNumber(500));
        addObject(new Victim(), Greenfoot.getRandomNumber(1100), Greenfoot.getRandomNumber(500));
        addObject(new Victim(), Greenfoot.getRandomNumber(1100), Greenfoot.getRandomNumber(500));
    } 
}
Tell me if another bit of the code would be helpful. Do I have to create an actor for the timer?
Super_Hippo Super_Hippo

2017/5/18

#
You could create a new class (for example Timer) with this code. Then you add an instance of this class to your world.
private int timer = 55*60; //about 60 seconds

public Timer()
{
    updateImage();
}

public void act()
{
    timer--;
    if (timer % 55 == 0) updateImage();
    if (timer < 1) Greenfoot.stop();
}

private void updateImage()
{
    setImage(new GreenfootImage("Zeit: " + timer/55, 20, Color.BLACK, Color.RED));
}
ProgrammingPanda ProgrammingPanda

2017/5/18

#
Thanks! It worked perfectly! :)
You need to login to post a reply.