Hallo liebes spieleprogrammierer.de Forum. Ich habe gestern probiert Conways Game of Life mit LibGDX umzusetzen. Ich habe dafür eine Klasse Feld erstellt und von ihr ein dickes zweidimensionales Array (40x40) gemacht. Alles funktioniert soweit gut, jedoch scheint es bei den Regeln Probleme zu geben. Irgendwie verhält sich meine Regelwelt anders, als die von Conway. Der Gleiter von Conway zum Beispiel funktioniert einfach nicht.
Ich habe die Regeln so realisiert, dass erst die Nachbarn gezählt werden und dann die entsprechenden Aktionen ausgeführt werden.
Code für die Regeln:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
private void tick() {
int x = 0;
int y = 0;
for(int i = 0;i<1600;i++){
int n = 0;
//Conway regeln:
if(y > 0 && y < 39 && x > 0 && x < 39) {
if(!fields[x+1][y].active)n+=1;
if(!fields[x-1][y].active)n+=1;
if(!fields[x][y+1].active)n+=1;
if(!fields[x][y-1].active)n+=1;
if(!fields[x+1][y+1].active)n+=1;
if(!fields[x+1][y-1].active)n+=1;
if(!fields[x-1][y+1].active)n+=1;
if(!fields[x-1][y-1].active)n+=1;
if(fields[x][y].active) {
if(n == 3)fields[x][y].setInactive();
}
if(!fields[x][y].active){
if(n < 2)fields[x][y].setActive();
if(n > 3)fields[x][y].setActive();
}
}
if(x == 38 && y != 38) {
x = 0;
y += 1;
}
x += 1;
}
}
|
Die Funktion Tick wird alle 0.5 Sekunden ausgeführt
Ich wollte jetzt fragen ob mir einer von euch erklären kann was ich falsch mache.
Download als .jar (JAVA benötigt) zum testen:
MEDIAFIRE
Steuerung:
Klicken um ein Feld aktiv zu setzen.
SPACE um zwischen Pause und laufend zu wechseln.