Einzelnen Beitrag anzeigen

Tiar

Registriert seit: 28. Feb 2006
7 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Spiel des Lebens; mal wieder

  Alt 2. Mär 2006, 12:46
So, ich bin zwar ein Stück weiter, aber ich komm einfach nicht mit der Konvertierung vom stringgrid in das char-feld klar. mein prog. startet zwar, aber sobald ich die zweite generation generieren lassen möchte, stürzt es ab.
Hat jemand einen hilfreichen Tipp oder konstruktive Kritik bzw ne Idee, wie ich das umsetzen könnte. Wär super, wenn sich jemand mal meinen anscheinend verkorksten Quelltext zu Gemüte ziehen würde:
Delphi-Quellcode:
var
  Lebensraumsimulator: TLebensraumsimulator;
  p,s,an,n :integer; //p=eingegebene Anfagszahl Individuen, s=Seitenlänge des Grids, n=Nachbar, an=Anzahl Nachbarn
  l:ARRAY of ARRAY of char;

implementation

{$R *.DFM}

Function Feldcheck(x,y:integer):integer;
VAR x2,y2 :integer;
BEGIN
an:=0;
 begin
 For x2:=x-1 to x+1 do
  For y2:=y-1 to y+1 do
   If not (x2=x) and (y2=y) then
   If (x2>=0) and (x2<s) and (y2>=0) and (y2<s) then
   If l[x2,y2]='*Then inc(an);
 end;
result:=an;
END;


PROCEDURE Evolution;
VAR x,y,x3,y3 :integer;
BEGIN
For x:=0 to s-1 Do
 For y:=0 to s-1 Do
  n:=Feldcheck(x,y);
  If l[x,y]='*Then Begin
   If n=2 or 3 Then l[x3,y3]:='*'
   Else l[x3,y3]:='t';
  End;
  If l[x,y]='tThen Begin
   If n=3 Then l[x3,y3]:='*'
   Else l[x3,y3]:='t';
  End;
END;

PROCEDURE Ausgabe; //Das Array mit x3 und y3 soll die Werte zwischenspeichern, hab ich mir zumindest so gedacht
VAR x,y,x3,y3:integer;
BEGIN
For x:=0 to s-1 do
 For y:=0 to s-1 do
  If l[x3,y3]='*Then
  Lebensraumsimulator.Stringgrid1.Cells[x,y]:='*'
  Else Lebensraumsimulator.Stringgrid1.Cells[x,y]:='';
END;

procedure TLebensraumsimulator.Button5Click(Sender: TObject); //Klick "Weiter"
var x,y:integer;
begin
Button2.visible:=false;
Button3.visible:=false;
g:=g+1;
Label5.Caption:=IntToStr(g);
for x:=0 to s-1 do
 for y:=0 to s-1 do
  If Stringgrid1.Cells[x,y]='*Then l[x,y]:='*//Bei Einzelablauf erscheint an genau dieser Stelle die Fehlermeldung, Warum?
  Else l[x,y]:='t';
  Evolution;
  Ausgabe;
end;
Schon mal im Vorraus THX
  Mit Zitat antworten Zitat