You are being forwarded to the lastest updates ot his page!
Or you can Click Here if it doesn't work or you don't wish to wait.

how can I get my game to pause in between rounds?

xmaspud
Hopefully this is another easy question. I'm still building my bat_and_ball game (see my post from yesterday) and I'm stuck again.

When my player fails to hit the ball back the ball goes out of play. The game plays a short piece of "you lost" music before restarting with a new ball. I want the game to pause for a few seconds while the music plays to give the player time to breathe, but at the moment it just plays the music and immediately restarts the game. Is there a simple way to tell my game to wait 5 seconds?

Here's the method:

code:


public void moveball()
{
.
.
.
if (x>500)
{
ballout.play();
waitamo();

x=200; //x and y co-ords of the new ball when game restarts
y=200;
}
.
.
.
}



and...
code:

public void waitamo()
{
for (int i=0; i<10000;i++)
}



as you can see, I tried to use a For loop to count down the time (as I used to do in BASIC) but this doesn't work... (why doesn't it work? is it something to do with threads?)

I also tried this:

code:

public void waitamo()
{
try {
wait(1000);
} catch (InterruptedException e) {
}

}


but when the ball went out it threw the error: "current thread not owner"

Can anyone help me please?


Jessica Bradley
the problem with something like this
code:
public void waitamo()
{
for (int i=0; i<10000;i++);
}


is that your computer could be REALLY fast and that loop will happen real quick. -- so you're not really timing anything.

what if instead of doing wait(1000) you call sleep(1000)? does that fix the Exception?

Also -- what if instead of automatically restarting after X seconds you instead pop up a button that says [restart?] that way the person can wait as long or as short as they want before they try again. And that way you can avoid the whole wait issue....

And lastly, I'm moving this to my snazzy games forum -- cause this is a game, and we need some more traffic!

[ August 24, 2004: Message edited by: Jessica Sant ]


psychohist@aol.com
Try calling sleep() statically: "Thread.sleep(1000)" instead of "wait(1000)".

If that doesn't work, maybe tell us what kind of exception was thrown, and maybe give us a stack trace?


jkneeland
Here is a simple timer class, just make a new one passing the time in seconds and then call t.time() and it will block till thr time has expired.

code:

public class Timer extends Thread
{
int howLong;
public Timer(int seconds)
{
this.howLong = 1000 * seconds; //make it seconds instead of milliseconds
}

public void time()
{
this.start();
try
{
this.join();
}
catch(InterruptedException ie)
{
//do nothing and just end
}
return; // normal return
}

public void run()
{
try
{
sleep(Math.abs(howLong));
}
catch(InterruptedException ie)
{
//do nothing and just end
}
}

public static void main(String args[])
{
int time = 15 ; //defualt of 15 seconds
if(args.length > 0)
{
time = Integer.parseInt(args[0]);
}
Timer t = new Timer(time);
t.time();
System.out.println("Time's up !!");
}
}

[ August 24, 2004: Message edited by: J Kneeland ]