Hallo!
Im unten stehenden Quellcode (soll einmal eine eigene Implementierung des Spiel des Lebens werden) sollte paint() eigentlich ein oranges bzw. ein blaues Rechteck zeichnen, je nach dem welchen Wert die Position in feld hat.
Genau das tut es aber nicht, was die Zeile nach der 2. Schleife beweist, die immer true ausgibt.
Danke im Voraus für jeden Hinweis. Ich bin schön langsam am Verzweifeln :bahnhof:
Im unten stehenden Quellcode (soll einmal eine eigene Implementierung des Spiel des Lebens werden) sollte paint() eigentlich ein oranges bzw. ein blaues Rechteck zeichnen, je nach dem welchen Wert die Position in feld hat.
Genau das tut es aber nicht, was die Zeile nach der 2. Schleife beweist, die immer true ausgibt.
Danke im Voraus für jeden Hinweis. Ich bin schön langsam am Verzweifeln :bahnhof:
Code:
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.Random;
public class Lebensfeld extends Canvas
implements Runnable {
int RES = 2; /Auflösung d. Spielfeldes
boolean[][] feld = new boolean[RES][RES]; //das Spielfeld
private long zyklus = 1000; //ms die gewartet werden, bis ein weiterer Durchlauf getätigt wird
public Lebensfeld() {
leeren();
}
public void paint(Graphics f) {
Graphics2D g = (Graphics2D)f;
g.setColor(Color.GREEN);
int x = 20, y = 20;
int l = 15;
for (int i=0; i<feld.length; i++) {
for (int ii=0; ii<feld.length; ii++) {
System.out.println("["+i+"] ["+ii+"]: "+feld[i][ii]);
if(feld[i][ii] == false) {
g.setColor(Color.ORANGE);
}
if(feld[i][ii] == true) {
g.setColor(Color.BLUE);
}
g.fillRect(x,y,l,l);
x+=l+1;
}
x=20;
y+=l+1;
}
g.dispose();
}
public void run() {
Random r = new Random();
while(true) {
if(Thread.interrupted()) {
break;
}
int a = Math.abs(r.nextInt())%RES;
int b = Math.abs(r.nextInt())%RES;
feld[a][b]=true;
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
Thread.currentThread().interrupt();
e.printStackTrace();
}
repaint();
}
}
/**
* Leer/initialisiert das Spielfeld, indem
* es alle Zellen auf false setzt.
*/
public void leeren() {
for (int i = 0; i < feld.length; i++) {
for (int ii = 0; ii < feld.length; ii++) {
feld[i][ii] = true;
}
}
repaint();
}
}