AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Game Of Life - ich könnte etwas Hilfe gebrauchen, bitte
Thema durchsuchen
Ansicht
Themen-Optionen

Game Of Life - ich könnte etwas Hilfe gebrauchen, bitte

Ein Thema von Lenuam · begonnen am 9. Feb 2008 · letzter Beitrag vom 16. Jun 2011
 
Benutzerbild von Maya
Maya

Registriert seit: 15. Jun 2011
Ort: Potsdam-Mittelmark
107 Beiträge
 
Delphi 2010 Enterprise
 
#16

AW: Game Of Life - ich könnte etwas Hilfe gebrauchen, bitte

  Alt 15. Jun 2011, 13:50
Hallo ihr Lieben,

da ich kein neues Topic aufmachen wollte und fand, dass das bisher besprochene hier ganz gut zu meinen Problem passt, dachte ich mir, ich nutze einfach mal den Thread hier.

Wie ihr euch sicherlich denken könnt, bastel ich mir gerade mein eigenes GoL zusammen. Es gelten bei mir die typischen 23/3-Regeln, bei dem die Ränder grundsätzlich tot sein sollen.
Damit ich mich erstmal in Ruhe an das Thema heranmachen kann, habe ich mir aus Panels ein 4x4-Feld gebastelt und einen Gleiter als Figur gewählt. Sinn der Sache soll sein, damit ich erstmal eine funktionierende Funktion (ach, tolle Grammatik) bauen kann. Im Anhang seht ihr, wie ich mir das aufbaute.

Jetzt zu meinen Problem: wie ihr im zweiten Screen seht, stimmt die erste Generation schon nicht. Eigentlich müsste es mit dem hier: http://upload.wikimedia.org/wikipedi..._Lebens%29.gif übereinstimmen. Ich bin schon seit Tagen auf der Suche (gut, nicht kontinuierlich, aber es nagt an mir), aber finde leider den Fehler nicht.

Beim debuggen ist mir aber folgendes aufgefallen.
Wenn ich bei dem Kästchen angekommen bin, wo eigentlich eine lebendige Zelle sein müsste, errechnet die Funktion 4 Nachbarn, anstatt nur drei. Die Funktion ist der Meinung, dass "unten links", wo eigentlich ja nichts ist, eine lebendige Zelle ist. Dies lässt mich vermuten, dass ich das Array falsch erstellt habe.

So, ich hoffe, dass ihr mir helfen könnt.
Delphi-Quellcode:
var
  Form1: TForm1;
  Zellen: array[1..4,1..4] of Integer;

function GameOfLife(x,y: Integer): Integer;
var Temp: Integer;
begin
  Temp:=0;
  if (Zellen[x-1,y-1]=1) then Temp:=Temp+1;
  if (Zellen[x,y-1]=1) then Temp:=Temp+1;
  if (Zellen[x+1,y-1]=1) then Temp:=Temp+1;

  if (Zellen[x-1,y]=1) then Temp:=Temp+1;
  if (Zellen[x+1,y]=1) then Temp:=Temp+1;

  if (Zellen[x-1,y+1]=1) then Temp:=Temp+1;
  if (Zellen[x,y+1]=1) then Temp:=Temp+1;
  if (Zellen[x+1,y+1]=1) then Temp:=Temp+1;

  case Temp of
  0,1,4..8: Result:=0;
  2: if (Zellen[x,y]=1) then Result:=1 else Result:=0;
  3: Result:=1;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Zaehler, i,j: Integer;
    Help: TComponent;
begin
  Zaehler:=1;
  for j:=1 to 4 do
    begin
      for i:=1 to 4 do
        begin
          Help:=Form1.FindComponent('Panel'+IntToStr(Zaehler));
          if (TPanel(Help).Color=clblack) then Zellen[i,j]:=1
              else Zellen[i,j]:=0;
          Zaehler:=Zaehler+1;
        end;
    end;

  Zaehler:=1;
  for j:=1 to 4 do
    begin
      for i:=1 to 4 do
        begin
          Help:=Form1.FindComponent('Panel'+IntToStr(Zaehler));
          if (GameOfLife(i,j)=1) then TPanel(Help).Color:=clblack
              else TPanel(Help).Color:=clwhite;
          Zaehler:=Zaehler+1;
        end;
    end;


end;

end.
Achso: das ist eine Aufgabe u.A. für die Berufsschule und da war gewollt, dass wir ein zweidimensionales Array für nehmen. Nur falls jemand auf eine andere Lösung kommt.
Angehängte Grafiken
Dateityp: png Screen01.PNG (9,1 KB, 11x aufgerufen)
Dateityp: png Screen02.PNG (9,3 KB, 12x aufgerufen)

Geändert von Maya (15. Jun 2011 um 14:59 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz