![]() |
Re: Schwierigkeiten mit Game of Life Algorithmus
Autsch, aber bitte bedenken, das Delphi die Gross/Kleinschreibung ignoriert, was bei deinem Code zu dezent perversen Effekten führt... :zwinker:
|
Re: Schwierigkeiten mit Game of Life Algorithmus
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Wenn ich das Feld größer mache und hierbei die randfelder Leer lassen, also somit eine umrandung schaffe, funktioniert das programm ja auch nicht. aber wenn ich mir andere, z.B. Java-Applets, anschaue, dann verhalten die sich genau wie mein programm, also wirds wohl doch irgendwo richtig sein :?: gibts ansonsten keine andere möglichkeit dieses quasi "runde" array zu verwirklichen ? ach ja, und danke für die andere nachbar-ermittlung, aber die bereitet mir weniger probleme als dieses Randfeld-Dilemma :( ps. hab ma mein programm angehängt, damit's deutlicher wird :) gruß fabiO |
Re: Schwierigkeiten mit Game of Life Algorithmus
Zitat:
Dein Array ist also so definiert:
Delphi-Quellcode:
Probe:
Var
LifeWelt : Array [0..N-1, 0..M-1] Of Byte; Function ZaehleNachbarn (i,j : Integer) : Integer; Var dx,dy : Integer; Begin Result := -alt[i,j]; // Wir zählen Alles, auch uns selbst For dx:=-1 to 1 do for dy:=-1 to 1 do If alt [(i + N + dx) mod N , (j + M + dy) mod M] = 1 then inc(Result); End; Linker Nachbar von j=0 soll sein: M-1. dy=-1, also ergibt j+M-1 mod M = M-1, q.e.d Rechter Nachbar von j=M-1 soll sein:0. dy= 1, also ergibt (M-1)+M +1 mod M = 2M mod M = 0. q.e.d Für alle anderen Fälle ist (j+M+dy) mod M = j+dy. q.e.d Gleiches gilt für oben/unten... oder (prüf mal selbst) |
Re: Schwierigkeiten mit Game of Life Algorithmus
Erhm also so ganz hab ich dein modulo nich gerafft :)
Und dazu sagt mir Delphi, dass es weder N, noch M kennt ([Error] Unit1.pas(30): Undeclared identifier: 'N') :) Kannst du nochma schaun, warum das nicht ganz funktionieren könnte? Danke schonmal für die Idee gruß fabiO |
Re: Schwierigkeiten mit Game of Life Algorithmus
Du musst Dir doch dein N und M selbst deklarieren...
Mach einfach
Delphi-Quellcode:
[delphi]
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: |
Re: Schwierigkeiten mit Game of Life Algorithmus
yo logisch, sorry stand bissl auf der leitung :)
kannte nur mod, wusste nich, dass es modulo heisst ;) Naja ich habe das mal in den Code eingesetzt, es funktioniert wie mit meinem code, also keine veränderung... Aber ich denke, da in den anderen Life-Programmen es genauso gemacht wird, werde ich es einfach so lassen... Danke für die Tipps! |
Re: Schwierigkeiten mit Game of Life Algorithmus
Liste der Anhänge anzeigen (Anzahl: 1)
hab einfach ma zum Abschluss mein fertiges ( :hello: :party: :hello: ) programm drangehangen...
Falls also jemand mal die selbe Aufgabe bekommen sollte, kann er sich ja gern bedienen. :cheers: gruß fabiO |
Re: Schwierigkeiten mit Game of Life Algorithmus
Sieht gut aus, nur: Was bedeutet der Button 'Lebende Nachbarn'? Was du vielleicht noch machen könntest, wäre die Option verschiedene Formationen erzeugen zu lassen, wie einen r-Pentomino oder andere interessante Objekte.
|
Re: Schwierigkeiten mit Game of Life Algorithmus
Liste der Anhänge anzeigen (Anzahl: 1)
hi...
ich hab mich doch nochma rangesetzt, und mir is ne ziemlich einfache lösung für das Problem des umlaufenden Feldes eingefallen, die ich jetzt einfach ma poste:
Delphi-Quellcode:
die werte für a1 und b1 kann man einfach durch die jeweiligen Feldgrenzen (+/- 1) ersetzen...
function nachbarn(x,y : Integer):Integer;
var a,a1,b,b1,c : Integer; begin c := 0; for a:=x-1 to x+1 do for b:=y-1 to y+1 do begin a1 := a; b1 := b; if a1 = 0 then a1:=50; if a1 = 51 then a1:=1; if b1 = 0 then b1:=50; if b1 = 51 then b1:=1; if ((a1<>x) or (b1<>y)) and (alt[a1,b1] = 1) then inc(c); end; nachbarn := c; end; gruß fabiO ps. der button war nur zu beginn von nutzen, um zu sehn, ob die function nachbarn funktioniert :) das mit den verschiedenen Formationen bau ich bald ma ein, danke für die idee :) |
Re: Schwierigkeiten mit Game of Life Algorithmus
Ich hatte mir mal überlegt, wenn ich life programmiert habe, dass ich des erweitere .. aber da ich von dem programm was hier zum dl steht mal nur nen kleinen Teil verstehe, dauert das wohl noch .. aber ihr könnt das bestimmt.
ich wollte zellen nicht sofort sterben und leben lassen, sondern wenn sie "belebt wird, wird sie erstmal ne runde grün und wenn sie stirbt ne runde rot .. und an sich hab ich schwarz für tod und weiss für lebend .. vielleicht will ja jemand von euch das probieren .. ^^ hf MfG Q |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 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