Alsooo~
ich schreibe momentan an einem Tetris programm (noch gaaaaaaanz am Anfang) und habe das Problem, dass ein Rechteck, was sich von oben nach unten bewegt nicht unten stehen bleibt, sondern aus dem Applet verschwindet und am unteren Rand wieder auftaucht und wieder verschwindet usw.
Mein Problem-Code dazu sieht so aus:
Kompletter Code:
Danke schonmal für jegliche hilfreiche Hinweise~
ich schreibe momentan an einem Tetris programm (noch gaaaaaaanz am Anfang) und habe das Problem, dass ein Rechteck, was sich von oben nach unten bewegt nicht unten stehen bleibt, sondern aus dem Applet verschwindet und am unteren Rand wieder auftaucht und wieder verschwindet usw.
Mein Problem-Code dazu sieht so aus:
Java:
public void run ()
{
// Erniedrigen der ThreadPriority
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
// Solange true ist läuft der Thread weiter
while (true)
{
if (y_pos > appletsize_y + radius)
{
// Ändern der Position des Balles
y_pos = 280;
}
//Verändere y Koordinate des Balls
y_pos+=y_speed;
// Neuzeichnen des Applets
repaint();
try
{
// Stoppen des Threads für in Klammern angegebene Millisekunden
Thread.sleep (20);
}
catch (InterruptedException ex)
{
// do nothing
}
// Zurücksetzen der ThreadPriority auf Maximalwert
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}
Kompletter Code:
Java:
import java.applet.*;
import java.awt.*;
public class Tetris extends Applet implements Runnable {
int x_pos = 100;
int y_pos = 10;
int radius = 20;
int y_speed = 1;
int appletsize_x = 300;
int appletsize_y = 300;
private Image dbImage;
private Graphics dbg;
int w = this.getSize().width;
int h = this.getSize().height;
public void init() {
this.resize(350,300);
}
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 stop() { }
public void destroy() { }
public void run ()
{
// Erniedrigen der ThreadPriority
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
// Solange true ist läuft der Thread weiter
while (true)
{
if (y_pos > appletsize_y + radius)
{
// Ändern der Position des Balles
y_pos = 280;
}
//Verändere y Koordinate des Balls
y_pos+=y_speed;
// Neuzeichnen des Applets
repaint();
try
{
// Stoppen des Threads für in Klammern angegebene Millisekunden
Thread.sleep (20);
}
catch (InterruptedException ex)
{
// do nothing
}
// Zurücksetzen der ThreadPriority auf Maximalwert
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}
public void paint (Graphics g)
{
// Setzten der Zeichenfarbe auf Rot
g.setColor (Color.red);
// Zeichen eines gefüllten Rechtecks
g.fillRect (x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);
}
public void update (Graphics g)
{
// Initialisierung des DoubleBuffers
if (dbImage == null)
{
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
}
// Bildschirm im Hintergrund löschen
dbg.setColor (getBackground ());
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
// Auf gelöschten Hintergrund Vordergrund zeichnen
dbg.setColor (getForeground());
paint (dbg);
// Nun fertig gezeichnetes Bild Offscreen auf dem richtigen Bildschirm anzeigen
g.drawImage (dbImage, 0, 0, this);
}
}
Danke schonmal für jegliche hilfreiche Hinweise~
Zuletzt bearbeitet von einem Moderator: