Moin Luckie,
ich gehe mal davon aus, dass der Fehler darin besteht, dass Du auf <> 0 testest, dabei aber nicht berücksichtigst, wenn x bzw. y an den jeweiligen Rand stossen, so dass z.B. für x = Field-1 nicht das Feld mit x+1 getestet werden darf.
Auch wenn die Vermutung falsch ist:
Man muss nicht nur berücksichtigen, wieviele Nachbarn ein Feld hat, sondern auch, ob es gefüllt ist oder nicht.
- Wenn ein Feld gefüllt ist, und 2 oder 3 Nachbarn hat bleibt das Feld gefüllt.
- Wenn ein Feld leer ist, und genau 3 Nachbarn hat, wird das Feld gefüllt.
- In allen anderen Fällen wird das Feld gelöscht, bzw. bleibt leer
Ist jetzt nur eine Vermutung, da die eigentliche Deklaration und die Art wie's gefüllt wird fehlen.
Ich hatte das letztens auch mal gemacht, und dabei ein (boolean) Array genommen, bei dem ich in jeder Richtung zwei Felder dazugenommen habe, so dass sich ein leerer Rand um die eigentliche "Welt" ergibt.
Dann kann man sich die Abfrage sparen, ob sich das Betreffende Feld auf einem Randfeld befindet.