DrunkenKilla
Ensign
- Registriert
- Aug. 2006
- Beiträge
- 210
hi leute, wenn ich das lifegame ausführe, sehe ich nur eine veränderung von der ersten zur zweiten print-anweisung...alle anderen sind gleich. kann mir das mal einer erklären?
Code:
class Life{
public Life(){
mspielfeld=new boolean[y][x];
mberechnete_nachbarn=new int[y][x];
init();
print();
game();
game_starter();
}
boolean mspielfeld[][];
int mberechnete_nachbarn[][];
int x=10;
int y=10;
public void game_starter(){
for(int i=0;i<200;++i){
game();
}
}
//initialisiert das Spielfeld
public void init(){
for(int i=0;i<mspielfeld.length;++i){
for(int j=0;j<mspielfeld[i].length;++j){
mspielfeld[i][j]=java.lang.Math.random()>0.5;
}
}
check_nachbar();
}
//druckt das Spielfeld aus
//o=true also ein Baustein, x=false
public void print(){
for(int i=0;i<mspielfeld.length;++i){
for(int j=0;j<mspielfeld[i].length;++j){
System.out.print(mspielfeld[i][j]?"o"+"\t":"x"/*+" "+mberechnete_nachbarn[i][j]*/+"\t");
}
System.out.println();
}
}
public void check_nachbar(){
int li=mspielfeld.length;
int lj=mspielfeld[0].length;
for(int i=0;i<mspielfeld.length;++i){
for(int j=0;j<mspielfeld[i].length;++j){
int count=0;
//Überprüfung oben links
if(mspielfeld[(i+li-1)%li][(j+lj-1)%lj])
count++;
//Überprüfung oben
if(mspielfeld[(i+li-1)%li][j])
count++;
//Überprüfung oben rechts
if(mspielfeld[(i+li-1)%li][(j+lj+1)%lj])
count++;
//Überprüfung links
if(mspielfeld[i][(j+lj-1)%lj])
count++;
//Überprüfung rechts
if(mspielfeld[i][(j+lj+1)%lj])
count++;
//Überprüfung unten links
if(mspielfeld[(i+li+1)%li][(j+lj-1)%lj])
count++;
//Überprüfung unten
if(mspielfeld[(i+li+1)%li][j])
count++;
//Überprüfung unten rechts
if(mspielfeld[(i+li+1)%li][(j+lj+1)%lj])
count++;
mberechnete_nachbarn[i][j]=count;
//System.out.println(count);
}
}
}
public void game(){
for(int i=0;i<mspielfeld.length;++i){
for(int j=0;j<mspielfeld[0].length;++j){
if(mspielfeld[i][j]){
//1.Weiterleben: Wenn ein Stein in seiner unmittelbaren Nachbarschaft (1-
//Feld-Umgebung) 2-3 weitere Steine hat, überlebt er die Runde.
if(mberechnete_nachbarn[i][j]>1&&mberechnete_nachbarn[i][j]<4)
mspielfeld[i][j]=true;
//2.Sterben: Wenn ein Stein in seiner unmittelbaren Nachbarschaft (1-Feld-
//Umgebung) weniger als 2 oder mehr als 3 weitere Steine hat, stirbt er (an
//Einsamkeit oder Übervölkerung) nach dieser Runde.
if(mberechnete_nachbarn[i][j]<2||mberechnete_nachbarn[i][j]>3)
mspielfeld[i][j]=false;
}
if(mspielfeld[i][j]==false)
//3.Neu Geboren: Wenn ein unbelegtes Feld an genau 3 Steine grenzt, wird
//dort ein neuer Stein geboren.
if(mberechnete_nachbarn[i][j]==3)
mspielfeld[i][j]=true;
}
}
System.out.println();
print();
}
}
public class Aufg1 {
public static void main(String[] args) {
Life l=new Life();
}
}