[Java] Lifegame

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();
	}
}
 
hab fehler gefunden...in der methode game() muss am ende nach der print()-anweisung check_nachbar() aufgerufen werden
 
Zurück
Oben