[Java] Graphics neu laden in Swing

m3x

Ensign
Registriert
Aug. 2005
Beiträge
218
Ich habe das Spiel Snake nachprogrammiert. Leider funktioniert es nur unter AWT, nicht aber unter Swing.
Die schlange besteht aus einzelnen rechtecken, deren Anfangspositionen in einem Array gespeichert sind.
Nach jedem Schritt werden diese Angaben um die Länge eines Rechtecks weiter "geschoben".
-> unter AWT bewegt sich die Schlange, unter Swing wird sie einfach nur länger, bzw. sie zieht sich selbst in die länge ;)

Code:
public static void main(String[] args) {
		Game window = new Game();
		window.setVisible(true);

		for (int i = 0; i < 6; i++) {     //Initzialisieren der Grundschlange

                        //Startpunkte der Rechtecke
			pointx[i] = tmp; //tmp = 70
			pointy[i] = 80;
                        
                        //Bewegungsangaben
			movex[i] = 10;
			movey[i] = 0;

			tmp -= 10;
		}
		for (int i = 5; i < 200; i++) {

			pointx[i] = 0;
			pointy[i] = 0;

		}

	}

Code:
public void paint (Graphics g) {
		g.setColor(Color.BLUE);

		for (int i = 0; i < 200; i++) {

			if ((pointx[i] != 0) || (pointy[i] != 0)) {

				g.fillRect(pointx[i], pointy[i], 10, 10);
				pointx[i] += movex[i];
				pointy[i] += movey[i];

			}

		}
		g.setColor(Color.black);

		for (int i = 199; i >= 1; i--) {

			if ((movex[i] != 0) || (movey[i] != 0)) {

				movex[i] = movex[i - 1];
				movey[i] = movey[i - 1];

			}

		}
		try {
			Thread.sleep(speed);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		this.repaint();

	}
 
Zurück
Oben