Hi again, I'm having some difficulties figuring out why the scenario doesn't stop when the countdown reaches zero. Any help would be greatly appreciated!
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
import java.util.Calendar;
/**
* Displays a digital clock in HH:MM:SS format.
*/
public class CountdownClock extends Actor
{
private int width = 50; // Dimensions of the display
private int height = 20;
private int prevSecond = -1;
private int counter = 10;
/**
* The constructor creates the actor's image.
*/
public CountdownClock() {
GreenfootImage image = new GreenfootImage(width, height);
image.setColor(Color.WHITE);
image.fill();
image.setColor(Color.BLACK);
image.drawRect(0, 0 ,width - 1, height - 1);
setImage(image);
updateDisplay(counter + ".0");
}
/**
* The clock is tick'd on every act() call, but the display changes
* only when the second's increments.
*/
public void act()
{
if (counter > 0)
{
updateDisplay(tick());
}
}
/**
* Increment the display string for the clock.
*/
public String tick()
{
// Compose new display string
Calendar calendar = Calendar.getInstance();
int sec = calendar.get(Calendar.SECOND);
int tsec = calendar.get(Calendar.MILLISECOND) / 100;
if (counter == 0)
{
return("0.0");
}
if (sec != prevSecond )
{
prevSecond = sec;
counter = counter - 1;
}
return(counter + "." + tsec);
}
/**
* Update the clock with the new time string.
*/
public void updateDisplay(String newTime)
{
// x and y relative to the image. baseline of leftmost character.
int x = 5;
int y = 15;
// Repaint the clock display
GreenfootImage image = getImage();
image.setColor(Color.WHITE);
image.fillRect(1, 1, width-2, height-2); // "erase" the display
image.setColor(Color.BLACK);
image.drawString(newTime, x, y);
setImage(image);
}
/**
* Returns the current value of the clock.
*/
public int getCounter()
{
return counter;
}
private void endOfGame()
{
if (counter == 0)
Greenfoot.stop() ;
}
}