Array als "unendliche" Schlaufe

LukeS

Erfahrenes Mitglied
Hallo zusammen

ich habe in meinem Programm ein 2-Dimensionales Array (bool), dass ein Spielfeld darstellt. Eigendlich sollte es die Oberfläche einer Kugel (Planet) darstellen.

Nun möchte ich die Nachbarfelder jedes Feldes des Arrays auswerten:

Code:
bool feldAlt[8][8] = new bool[8][8];
		bool feldNeu[8][8] = new bool[8][8];
		int nachbarn;
		int fehler;
		
		for(int x=0; x<feldAlt.length; x++){
			for(int y=0; y<feldAlt[].length; y++){
			}
		//Nachbarn abchecken wobei [x][y] das aktuelle Feld ist
		
		if(feldAlt[x-1][y-1] = true){
			nachbar += 1
		}
		
		if(feldAlt[x-1][y] = true){
			nachbar += 1
		}
		
		if(feldAlt[x-1][y+1] = true){
			nachbar += 1
		}
		
		if(feldAlt[x][y-1] = true){
			nachbar += 1
		}
		
		if(feldAlt[x][y+1] = true){
			nachbar += 1
		}
		
		if(feldAlt[x+1][y-1] = true){
			nachbar += 1
		}
		
		if(feldAlt[x+1][y] = true){
			nachbar += 1
		}
		
		if(feldAlt[x+1][y+1] = true){
			nachbar += 1
		}


Die grösse des Spielfeldes sollte veränderbar sein. Ist aber vorerst auf 8x8 definiert.
Das Problem ist, dass ich die Nachbarfelder der Randfelder so nicht auswerten kann.
Ich könnte es so lösen, dass ich die Randfelder separat abchecke.
Doch vielleicht kennt jemand ne elegantere Lösung.

Vielen Dank für eure Hilfe!
Gruss LukeS

P.S: schlussendlich sollte es sowas wie das Game of Life werden: http://de.wikipedia.org/wiki/Game_of_Life
 
Hallo!

GoL hab ich auch schonmal umgesetzt, dass macht echt Spass.

Du kannst so wie du es machst auch die Randfelder checken. Exceptions die dabei entstehen fängst du dann einfach.

Kleiner Tipp:
Statt für jedes Feld zu prüfen ob ein Nachbar lebt ist es schneller/besser für lebende Felder alle Nachbarn zu "informieren" (den Zähler des Nachbarn hochsetzten). Also die umgekehrte Logik von dir.
Das klappt genau dann besser, wenn es weniger lebende als tote Viecher gibt ;)

Grüsse TrueSun
 
Danke für die Antwort!

Das Problem ist, dass ich meine GoL-Karte als Kugel (Planet) machen möchte.
Deshalb muss ich für die erste Zeile auch die letze Zeile als Nachbar ansehen und umgekehrt.
Das selbe auch für linker und rechter Rand.

Danke für eure Tips!
 

Neue Beiträge

Zurück