Forum: Sonstige Fragen zu Delphi
Delphi
by alzaimar,
12. Dez 2005
Du musst Dir doch dein N und M selbst deklarieren...
Mach einfach
Const
N = 50;
M = 50;
Dann ist dein Life-Array 50x50 felder gross...
Modulo ist nur der 'Rest' einer Division. 17 mod 5 = 2, weil 12 geteilt durch 5 ist 3 Rest 2. Der 'Rest' ist der modulo. Ganz einfach, oder? :zwinker:
Forum: Sonstige Fragen zu Delphi
Delphi
by alzaimar,
12. Dez 2005
Ach ja, Eckenfelder haben ja seltener 3 Nachbarn... Soll das so sein? Hab ich nie gemacht, aber egal. Wenn Du aber einen Überlauf haben willst, also der linke Nachbar von A soll A sein, dann versuche Dein Glück mal mit 'modulo'.
Dein Array ist also so definiert:
Var
LifeWelt : Array Of Byte;
Function ZaehleNachbarn (i,j : Integer) : Integer;
Var
dx,dy : Integer;
Begin
Forum: Sonstige Fragen zu Delphi
Delphi
by alzaimar,
12. Dez 2005
Autsch, aber bitte bedenken, das Delphi die Gross/Kleinschreibung ignoriert, was bei deinem Code zu dezent perversen Effekten führt... :zwinker:
Forum: Sonstige Fragen zu Delphi
Delphi
by alzaimar,
12. Dez 2005
Deine Funktion zum Zählen der Nachbarn ist doch fast schon perfekt, nur musst Du eben dafür sorgen, das nur legale Felder gezählt werden. Du kannst dazu aber der Einfachheit halber dein Feld etwas größer machen und die zusätzlichen Randfelder einfach leer lassen:
Var
LifeWelt : Array Of Integer; // bzw. Byte, reicht ja
So, nun zur Routine, die die nächste Generation ausrechnet. Ob eine...
Forum: Sonstige Fragen zu Delphi
Delphi
by alzaimar,
12. Dez 2005
Wirklich so implementiert? Oder ist das Pseudocode? Du vergleichst, ob die Anzahl der Nachbarn gleich dem Ergebnis des Terms '2 or 3' ist.
Denn (2 or 3) ergibt 10 or 11 (binär) ergibt 11(binär) also 3. Nur wenn ich 3 Nachbarn habe, bleibe ich am Leben. Der Mittlere würde demnach auch sterben, denn er hat 2 Nachbarn. Genau das passiert bei Dir aber.
Du müsstest das umformulieren:
procedure...