Einzelnen Beitrag anzeigen

fabiO

Registriert seit: 5. Dez 2004
Ort: Jena
41 Beiträge
 
Delphi 6 Personal
 
#8

Re: Schwierigkeiten mit Game of Life Algorithmus

  Alt 12. Dez 2005, 14:16
Danke für deine Antwort!
Es funktioniert nun, jedoch musste ich noch 2 extra if-Anweisungen mit einbinden, weil es nur mit deinem code immernoch das falsche ergebniss lieferte!
Ich habe nun folgendes stehen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i,k,n : Integer;
begin
  for i := 1 to high(alt) do
    for k := 1 to length(alt) do begin
      n := Nachbarn (i,k);
      if (alt[i,k] = 1) AND not (n in [2,3]) then
        neu[i,k] := 0
      else if (alt[i,k] = 1) AND (n in [2,3]) then
        neu[i,k] := 1;
      if (alt [i,k] = 0) AND (n = 3) then
        neu[i,k] := 1
      else if (alt [i,k] = 0) AND not (n = 3) then
        neu[i,k] := 0;
    end;

  einlesen;
  ausgeben;
end;
Jedoch besteht mein Problem mit den Randfeldern immernoch. Ich habe keine Vorstellung, wie ich Delphi sagen soll, dass wenn ein Feld den x-Wert oder y-Wert 1 oder 50, oder auch beides, hat, dass es dann beim überschreiten der Feldgrenzen auf die gegenüberliegende Seite wechseln soll.

Ich hatte mal folgendes probiert:

Delphi-Quellcode:
if (k = 1) then
    begin
      if alt[i+1,k] = 1 then inc(c);
      if alt[i+1,k+1] = 1 then inc(c);
      if alt[i,k+1] = 1 then inc(c);
      if alt[i-1,k+1] = 1 then inc(c);
      if alt[i-1,k] = 1 then inc(c);
      if alt[i-1,50] = 1 then inc(c);
      if alt[i,50] = 1 then inc(c);
      if alt[i+1,50] = 1 then inc(c);
    end;
Nur ist diese Variante ja nicht gerade sehr effizient, weil es einfach nur Zeile für Zeile aufgeschrieben wird, was man natürlich auch machen könnte

Wie Grishnak in seinem Post (#2) schon bemerkte:


Zitat von Grishnak:
Zu Randfeldern: (...) es gibt keine Randfelder, sondern das Feld ist umlaufend (z.B. die Nachbarn von [3;1] sind dann [2;50], [3;50], [4;50], [2;1], [4;1], [2;2], [3;2] und [4;2].
Nur wie mache ich das ? Wäre echt dankbar für einen effizienteren Denkanstoß als der Meinige

gruß fabiO
  Mit Zitat antworten Zitat