Hi,
Ich möchte, wenn man auf Taste p drückt der Ball pausiert und bei einem erneuten Tastendruck sie wieder weiterläuft. Ich habe es zwar mit wait() und notify() wie unten versucht, aber es läuft nicht.
Wie ist es denn richtig? Danke.
Ich möchte, wenn man auf Taste p drückt der Ball pausiert und bei einem erneuten Tastendruck sie wieder weiterläuft. Ich habe es zwar mit wait() und notify() wie unten versucht, aber es läuft nicht.
Wie ist es denn richtig? Danke.
Code:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Ballbewegung1 extends Applet implements Runnable, KeyListener
{
// Initialisierung der Variablen
int x_pos = 10; // x - Position des Balles
int y_pos = 100; // y - Position des Balles
int radius = 20; // Radius des Balles
private boolean paused=false;
private Object pauseMonitor=new Object();
public void init()
{
addKeyListener(this);
}
public void keyTyped(KeyEvent e) {
if(e.getKeyChar() == 'p'){
if(paused) {
synchronized (pauseMonitor) {
pauseMonitor.notify();
}
} else {
paused=true;
}
}
}
public void keyReleased(KeyEvent e){}
public void keyPressed(KeyEvent e) {}
public void start ()
{
// Schaffen eines neuen Threads, in dem das Spiel läuft
Thread th = new Thread (this);
// Starten des Threads
th.start ();
}
public void run ()
{
Thread.currentThread().setPriority(Thread.MIN_PRIORITY) ;
while(true) {
x_pos ++;
repaint();
if(paused) {
synchronized (pauseMonitor) {
try {
pauseMonitor.wait();
Thread.sleep (10);
} catch (InterruptedException e) {}
}
paused=false;
}
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}
public void paint (Graphics g)
{
g.setColor (Color.red);
g.fillOval (x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);
}
}