Mhh dein Code, mit der überlebenden Zelle, leuchtet nich so ganz ein!
Delphi-Quellcode:
if (alt [i,k] = 0) AND (nachbarn(i,k) = 2)
then alt[i,k] := 1;
Dass würde ja beudeten, dass ein Feld, das vorher tot war und 2 lebende Nachbarn besitzt, nun lebendig ist, und das wäre ja gegen die Spielregeln.
Das mit den überlebenden habe ich mal so eingearbeitet:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var i,k : Integer;
begin
for i := 1 to high(alt) do
for k := 1 to length(alt) do
begin
if (alt[i,k] = 1) AND (nachbarn(i,k) = (2 or 3))
then neu[i,k] := 1
else neu[i,k] := 0;
if (alt [i,k] = 0) AND (nachbarn(i,k) = 3)
then neu[i,k] := 1;
end;
einlesen;
ausgeben;
end;
Also falls eine Zelle lebt (=1) und sie 2 ODER 3 lebende Nachbarn hat, lebt sie weiter (:=1).
Andernfalls stirbt sie (:=0).
Falls eine Zelle tot ist und genau 3 lebende Nachbarn hat, wird sie belebt (:=1).
Aber trotzdem erhalte ich dieses Bild:
[
o][
o][
x][
o][
o]
[
o][
o][
o][
o][
o]
[
o][
o][
x][
o][
o]
d.h. es wird immernoch nicht richtig umgesetzt...?!?