Hallo Community,
ich habe Snake in Java programmiert. Steht zurzeit noch in den Kinderschuhen, aber die Steuerung & Bewegung funktioniert schonmal. Probleme habe ich jetzt noch mit dem zeichnen.
Dazu folgendes:
Ich habe also das Programm geschrieben, ausprobiert und voila, funktioniert. Ich kann die Schlange mit den Pfeiltasten herumsteuern. Aufgefallen ist mir halt dann, dass das, was vorher gezeichnet wurde, nicht verschwindet. "Achso, repaint vergessen..". Also schnell in den Thread ein repaint() gepackt und Run. Was ich dann sah, machte mir etwas stutzig. Am Besten kann man es wohl mit "flackern" beschreiben. Also so wie ich das erkennen konnte, wurde immer wieder neu gezeichnet, nur man sah die Schlange nur kurz aufflackern oder sogar nur einzelne Punkte o0
Ahm ja, ich dachte vl. ist es das DoubleBuffering und setzte dieses auf true.. denkste ...
Tja, soweit bin ich nun =\ Ich werde ma etwas Code posten, damit ihr euch das ma anschaun könnt. Wenn mir wer helfen könnte, wär das klasse
JPanel - Land:
MainThread - while(true)
Wenn mehr benötigt wird, einfach sagen, glaube das sind so die wichtigsten Sachen.
ich habe Snake in Java programmiert. Steht zurzeit noch in den Kinderschuhen, aber die Steuerung & Bewegung funktioniert schonmal. Probleme habe ich jetzt noch mit dem zeichnen.
Dazu folgendes:
Ich habe also das Programm geschrieben, ausprobiert und voila, funktioniert. Ich kann die Schlange mit den Pfeiltasten herumsteuern. Aufgefallen ist mir halt dann, dass das, was vorher gezeichnet wurde, nicht verschwindet. "Achso, repaint vergessen..". Also schnell in den Thread ein repaint() gepackt und Run. Was ich dann sah, machte mir etwas stutzig. Am Besten kann man es wohl mit "flackern" beschreiben. Also so wie ich das erkennen konnte, wurde immer wieder neu gezeichnet, nur man sah die Schlange nur kurz aufflackern oder sogar nur einzelne Punkte o0
Ahm ja, ich dachte vl. ist es das DoubleBuffering und setzte dieses auf true.. denkste ...
Tja, soweit bin ich nun =\ Ich werde ma etwas Code posten, damit ihr euch das ma anschaun könnt. Wenn mir wer helfen könnte, wär das klasse
JPanel - Land:
Code:
public class Land extends JPanel{
public void paint(Graphics g){
Iterator<Punkt> it = Spiel.list.listIterator();
Punkt temp;
Startpunkt sp=(Startpunkt) it.next();
Richtung dir_sp = sp.getDir();
int x = sp.getX(), y = sp.getY(), tempx, tempy;
if(dir_sp == Richtung.RIGHT)
sp.setX(x+10);
else if(dir_sp == Richtung.DOWN)
sp.setY(y+10);
else if(dir_sp == Richtung.LEFT)
sp.setX(x-10);
else if(dir_sp == Richtung.UP)
sp.setY(y-10);
g.drawOval(sp.getX(), sp.getY(), 10, 10);
while(it.hasNext()){
temp=it.next();
tempx=temp.getX();
tempy=temp.getY();
temp.setX(x);
temp.setY(y);
x=tempx;
y=tempy;
g.drawOval(temp.getX(), temp.getY(), 10, 10);
}
}
}
MainThread - while(true)
Code:
while(true){
jf.repaint();
land.paint(jf.getGraphics());
//Verzögern
try {
Thread.sleep(sleeptime);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Wenn mehr benötigt wird, einfach sagen, glaube das sind so die wichtigsten Sachen.