# Bildfehler beim schnellen neuzeichnen



## alex_ (12. Jan 2005)

hi,

ich bin dabei ein spielchen zu programmieren, (ich glaube es heißt thron) egal, es geht darum dass der spieler eine farbige linie auf dem bildschirm steuert. soweit klappt alles, jedoch entstehen ungewünschte und ziemlich störende Effekte wenn das Programm die linien neuzeichnet. Das geschieht alle 10 millisekunden. 

hier ist die paint-methode:

```
public void paint(Graphics g) { //------------------------PAINT------------------
			Graphics2D g_2D = (Graphics2D) g;
			switch (spieler1.direction) {
				case 0 :
					spieler1.posX++;
					break;
				case 1 :
					spieler1.posY--;
					break;
				case 2 :
					spieler1.posX--;
					break;
				case 3 :
					spieler1.posY++;
					break;
			}
			if (spieler1.posX < 0
				|| spieler1.posY < 0
				|| spieler1.posX >= 900
				|| spieler1.posY >= 700
				|| 0 < matrix[spieler1.posX][spieler1.posY]) {
				System.out.println("Spieler1 hat verloren!");
				count.interrupt();
			}
			matrix[spieler1.posX][spieler1.posY] = 1;
			g.setColor(Color.RED);
			spieler1.koords.setBack();
			Koord last = (Koord) spieler1.koords.getNext();
			g_2D.draw(
				new Line2D.Float(spieler1.posX, spieler1.posY, last.x, last.y));
			while (spieler1.koords.hasNext()) {
				Koord akt = (Koord) spieler1.koords.getNext();
				g_2D.draw(new Line2D.Float(akt.x, akt.y, last.x, last.y));
				last = akt;
			}
		} //----------------------------------------------------end-of-PAINT--------------
```
_edit: Code Tags! becstift_


----------



## Griffin (12. Jan 2005)

Benutz bitte die Code-Tags. Erleichtern das Lesen deines Code.

1. Das was du suchst nennt sich Double-Buffering
Hier stand irgendwo was genaures dazu:
http://javacooperation.gmxhome.de/LinksDeu.html

Dabei wird alles zuerst auf ein "Bild" gezeichnet und wenn alles gezeichnet worden ist wird dieses "Bild" dann auf dem Bildschirm gezeichnet.

2. Es ist nicht unbedingt ratsam die Verarbeitung der Daten in die Paint-Methode zu packen. Besser ist es die in eine eigene Methode auszulagern oder sogar das ganze so zu programmieren, dass sich Objekte selbst zeichnen.

EDIT:
Eine Suche hier im Forum "Double-Buffering" hilft sicherlich auch weiter.


----------



## Gast (13. Jan 2005)

danke, 
hast mir sehr geholfen..


----------

