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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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.