AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Schwierigkeiten mit Game of Life Algorithmus
Thema durchsuchen
Ansicht
Themen-Optionen

Schwierigkeiten mit Game of Life Algorithmus

Ein Thema von fabiO · begonnen am 11. Dez 2005 · letzter Beitrag vom 12. Jan 2006
Antwort Antwort
Seite 2 von 3     12 3      
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: Schwierigkeiten mit Game of Life Algorithmus

  Alt 12. Dez 2005, 13:39
Autsch, aber bitte bedenken, das Delphi die Gross/Kleinschreibung ignoriert, was bei deinem Code zu dezent perversen Effekten führt...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
fabiO

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

Re: Schwierigkeiten mit Game of Life Algorithmus

  Alt 12. Dez 2005, 15:01
Zitat von alzaimar:
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:
Delphi-Quellcode:
Var
  LifeWelt : Array [-1..51,-1..51] Of Integer; // bzw. Byte, reicht ja
Ich hab das mal überdacht, wobei mir etwas aufgefallen ist.
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
Angehängte Dateien
Dateityp: zip game_of_life_212.zip (236,5 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: Schwierigkeiten mit Game of Life Algorithmus

  Alt 12. Dez 2005, 15:12
Zitat von fabiO:
Ich hab das mal überdacht, wobei mir etwas aufgefallen ist.
Wenn ich das Feld größer mache und hierbei die randfelder Leer lassen, also somit eine umrandung schaffe, funktioniert das programm ja auch nicht.
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[i,0] soll A[i,50] sein, dann versuche Dein Glück mal mit 'modulo'.
Dein Array ist also so definiert:
Delphi-Quellcode:
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;
Probe:
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)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
fabiO

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

Re: Schwierigkeiten mit Game of Life Algorithmus

  Alt 12. Dez 2005, 18:45
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
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#15

Re: Schwierigkeiten mit Game of Life Algorithmus

  Alt 12. Dez 2005, 18:47
Du musst Dir doch dein N und M selbst deklarieren...
Mach einfach
Delphi-Quellcode:
Const
  N = 50;
  M = 50;
[delphi]
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?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
fabiO

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

Re: Schwierigkeiten mit Game of Life Algorithmus

  Alt 12. Dez 2005, 19:07
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!
  Mit Zitat antworten Zitat
fabiO

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

Re: Schwierigkeiten mit Game of Life Algorithmus

  Alt 12. Dez 2005, 22:41
hab einfach ma zum Abschluss mein fertiges ( ) programm drangehangen...
Falls also jemand mal die selbe Aufgabe bekommen sollte, kann er sich ja gern bedienen.

gruß fabiO
Angehängte Dateien
Dateityp: zip game_of_life_136.zip (253,5 KB, 29x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#18

Re: Schwierigkeiten mit Game of Life Algorithmus

  Alt 13. Dez 2005, 14:03
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.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
fabiO

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

Re: Schwierigkeiten mit Game of Life Algorithmus

  Alt 13. Dez 2005, 16:13
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:
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;
die werte für a1 und b1 kann man einfach durch die jeweiligen Feldgrenzen (+/- 1) ersetzen...

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
Angehängte Dateien
Dateityp: zip game_of_life_436.zip (254,1 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat
Quaigon

Registriert seit: 12. Jan 2006
1 Beiträge
 
#20

Re: Schwierigkeiten mit Game of Life Algorithmus

  Alt 12. Jan 2006, 19:40
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 23:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz