samedi 9 mai 2015

Game of Life "unendlichkeits" Problem

Ich habe das Spiel "Game of Life" graphisch nach programmiert, bin aber auf eine kleine Hürde gestoßen.
Die Zellen habe ich in ein zweidimensionales Array gespeichert, dabei wird jede Zelle einzeln auf die Anzahl der lebenden Nachbarn überprüft. Das Problem sind aber die Randzellen. Wenn ich von der Zelle [0][0] die Nachbarn überprüfe (also [-1][0]), [1][0],[0][-1],...,) dann stellt sich die Frage. Was mache ich mit den Zellen die es nicht gibt. Also die mit einem Negativen Index. Bis jetzt habe ich mit einer if Abfrage verhindert, dass eine Zelle mit negativem Index
ausgewählt werden kann. Das Problem dabei ist, dass der Rand dann einfach als permanent tote Zellen gesehen wird.

Beim Game of Life müsste es aber theoretisch ein Unendlich großes "Spielfeld" geben. Für mich ergeben sich nun 3 möglichkeiten:
1.Einen toten Rand lassen, was aber das Endergebnis verfälscht.
2. Das Spielfeld Torusförmig darstellen, sprich was unten rausgeht kommt oben wieder rein
3. Das Spielfeld sehr viel größer initialisieren, aber nur einen Teil davon anzeigen um eine Unendlichkeit vorzutäuschen.

Was wäre die eleganteste Lösung für soetwas?

Ein Beispiel: Ein Gleiter der auf den Rand trifft wird bei 1. einfach zerstört und es entsteht irgendetwas daraus, bei 2. würder er an der anderen Seite wieder reinkommen und bei 3. würde er verschwinden, zwar noch da existieren(bis er auf den Rand des nicht sichtbaren trifft), aber nicht mehr Sichtbar sein.

Hat vielleicht jemand eine Idee wie ich das realisieren könnte?


Game of Life "unendlichkeits" Problem

0 commentaires:

Enregistrer un commentaire