Conway's Game Of Life

    • Release
    • Open Source

    Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von ThePlexian.

      Conway's Game Of Life

      Conway's Game Of Life

      Beschreibung:
      Diese Software ist ein Animationsprogramm für Conway's Game Of Life. Sämtliche Einstellungen sind anpassbar, und auch alles was der zelluäre Automat darbietet ist implementiert.
      Die Bedieung sollte selbsterklärend sein (Englisch), zur Not ausprobieren ^^
      Vier Hinweise aber: InputMode beschreibt, was passieren soll beim überfahren mit geklickter Maus (Toggle an -> aus / aus -> an, Activate alles an, Deactivate alles aus). In den Settings beschreibt "Distance Cell <-> Grid" den Abstand zwischen einer Form in der Zelle und das umrandende Raster in Pixeln. Erhöht den Wert einfach mal, ihr seht den Unterschied. "Allow Torus map" beschreibt, ob die Fläche sich wie ein Torus verhalten soll (links raus, rechts wieder rein). Die SaveForm öffnet sich nur, wenn ihr bereits eine Animation hattet (einmal auf "Next" klicken").

      Screenshots:


      Verwendete Programmiersprache und IDE:
      C# (IDE: VS 2013 Professional)

      Systemanforderungen:
      .NET Framework 4.0

      Download:
      Binaries: Conways Game Of Life.zip (25,54 kB)
      GitHub: github.com/ThePlexian/Conway-s-Game-Of-Life-Simulator.git

      Lizenz/Weitergabe:
      Freeware, Closed Source (Dekompilieren ist erlaubt, ist eh nicht drin was man klauen könnte ^^) OpenSource

      ToDo Liste:
      Will be done... someday...

      - Bugfix: Der MouseHover bleibt manchmal in der Form obwohl die Maus schon weg ist.
      - Bugfix: Die Application wirft eine IndexOutOfRangeException, wenn man mit der Maus außerhalb des Feldes aber noch innerhalb des Controls einen Klick durchführt.
      - Version aus dem Titel entfernen.
      - BugFix: Der ResetButton in den Settings resetted nicht alle Einstellungen
      - Die Titel der Formen werden geändert
      - Nicht alle Formen werden als modaler Dialog behandelt so wie sie es eigentlich sollten.
      - Loading Form


      Note:
      Im Verzeichnis %appdata% wird ein Ordner "Conway's Game OF Life" erstellt!


      Label von Closed Source nach Open Source geändert
      -Artentus

      Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „Artentus“ ()

      Thorstian schrieb:

      Spielfeld der Monitorgröße anpasst

      Was meinst du damit :)

      Und danke schonmal, das mit den Voreinstellungen kommt in die LoadForm ist schon geplant :)
      Ich hab 'nen kleinen Bug in deinen Settings gefunden

      Wenn ich im Settings Dialog eine Custom Regel definiere, auf "Save" klicke und dann den Dialog nochmal öffne, wird die zuvor ausgewählte Regel angezeigt (und auch verwendet).

      Der gemeine Bereich ist auf dem Screenshot nochmal mit Rot umrandet:
      Ich Antworte nach bestem Wissen und Gewissen. Ich übernehme keine Garantie für die Richtigkeit oder Fehlerfreiheit meiner Texte.


      Ich konnte dir helfen?
      - Das ist schön :) Ich würde mich über ein "Hilfreich" freuen ^^
      @Angry Onion : Das ist ein Control und läuft alles über GDI :)

      @misbe : Ich danke dir, ist behoben und neue Datei ist im Startpost :) (Es fehlte die neue Zuweisung der Control.Rule - Property zu der lokalen Variable der Form ;) )
      Wenn ich versuche mit GDI zu arbeiten, dann dauert das immer gefühlte Jahre zum zeichnen.

      Hättest du was dagegen, deinen Sourcecode freizugeben, oder wenigstens den Teil, wo das Grid gezeichnet wird?
      Finde das sehr interessant.
      @Angry Onion
      Ich weiß, das ist jetzt OffTopic, aber poste du doch mal deinen Code, GDI+ ist eigentlich gar nicht soo langsam, wenn man manchmal gewisse Tricks beachtet.
      @Angry Onion : Hier ist mal eine Version vom Control, ich hab aber alle If-Statements rausgenommen, die zur Vielfältigkeit beitragen, du hast ja gesehen was man alles in den Settings einstellen kann, jetzt hab ich nur halt normales Grid, quadratischer CellStyle. Frag wenns Fragen gibt, ist aber C# :)

      EDIT: Hab einmal ne bessere Datei hochgeladen ^^ Attributes ist btw eine Static Class
      Dateien
      • Control.cs

        (6,34 kB, 125 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ThePlexian“ ()

      Ich habe mit der alten Version folgende Einstellungen gemacht:

      Und beim Öffnen der neuen .exe diese Fehlermeldung erhalten:
      Informationen über das Aufrufen von JIT-Debuggen
      anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

      ************** Ausnahmetext **************
      System.ArgumentException: Ungültiger Parameter.
      bei System.Drawing.Pen.set_DashPattern(Single[] value)
      bei GameOfLife.UI.FieldOfLifeUI.DrawOnGfx(Graphics egfx)
      bei GameOfLife.UI.FieldOfLifeUI.OnPaint(PaintEventArgs e)
      bei System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
      bei System.Windows.Forms.Control.WmPaint(Message& m)
      bei System.Windows.Forms.Control.WndProc(Message& m)
      bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

      ************** Geladene Assemblys **************
      mscorlib
      Assembly-Version: 4.0.0.0.
      Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
      CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll.
      ----------------------------------------
      Conways Game Of Life
      Assembly-Version: 1.0.0.26171.
      Win32-Version: 1.0.0.0.
      CodeBase: file:///D:/Users/Mischa/AppData/Local/Temp/Rar$EXa0.362/Conways Game Of Life.exe.
      ----------------------------------------
      System.Windows.Forms
      Assembly-Version: 4.0.0.0.
      Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
      CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
      ----------------------------------------
      System.Drawing
      Assembly-Version: 4.0.0.0.
      Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
      CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
      ----------------------------------------
      System
      Assembly-Version: 4.0.0.0.
      Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
      CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll.
      ----------------------------------------
      System.Drawing.resources
      Assembly-Version: 4.0.0.0.
      Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
      CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing.resources/v4.0_4.0.0.0_de_b03f5f7f11d50a3a/System.Drawing.resources.dll.
      ----------------------------------------
      System.Windows.Forms.resources
      Assembly-Version: 4.0.0.0.
      Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
      CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
      ----------------------------------------
      mscorlib.resources
      Assembly-Version: 4.0.0.0.
      Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
      CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_de_b77a5c561934e089/mscorlib.resources.dll.
      ----------------------------------------

      ************** JIT-Debuggen **************
      Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
      Konfigurationsdatei der Anwendung oder des Computers
      (machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
      Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

      Zum Beispiel:

      <configuration>
      <system.windows.forms jitDebugging="true" />
      </configuration>

      Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
      Ausnahmen an den JIT-Debugger gesendet, der auf dem
      Computer registriert ist, und nicht in diesem Dialogfeld behandelt.



      Ich vermute, es liegt am Gridstyle "BrokenLines" (da in der Fehlermeldung ja Pen.set_DashPattern erwähnt wird!)
      Teste das nochmal eben, in dem ich die Settings ändere und das Programm neustarte...

      €dit: Jop, GridStyle geändert und es funktioniert wieder!

      €dit²: Außerdem ist dieser Bug:

      ThePlexian schrieb:

      - Bugfix: Die Application wirft eine IndexOutOfRangeException, wenn man mit der Maus außerhalb des Feldes aber noch innerhalb des Controls einen Klick durchführt.
      wieder drin (falls er denn schon draußen war (wovon ich aus gehe, da er durchgestrichen ist)

      Fehlermeldung
      Informationen über das Aufrufen von JIT-Debuggen
      anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

      ************** Ausnahmetext **************
      System.IndexOutOfRangeException: Der Index war außerhalb des Arraybereichs.
      bei GameOfLife.UI.FieldOfLifeUI.ChangeCell(MouseEventArgs e)
      bei GameOfLife.UI.FieldOfLifeUI.OnMouseMove(MouseEventArgs e)
      bei System.Windows.Forms.Control.WmMouseMove(Message& m)
      bei System.Windows.Forms.Control.WndProc(Message& m)
      bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

      ************** Geladene Assemblys **************
      mscorlib
      Assembly-Version: 4.0.0.0.
      Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
      CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll.
      ----------------------------------------
      Conways Game Of Life
      Assembly-Version: 1.0.0.26171.
      Win32-Version: 1.0.0.0.
      CodeBase: file:///D:/Users/Mischa/AppData/Local/Temp/Rar$EXa0.683/Conways Game Of Life.exe.
      ----------------------------------------
      System.Windows.Forms
      Assembly-Version: 4.0.0.0.
      Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
      CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
      ----------------------------------------
      System.Drawing
      Assembly-Version: 4.0.0.0.
      Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
      CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
      ----------------------------------------
      System
      Assembly-Version: 4.0.0.0.
      Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
      CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll.
      ----------------------------------------
      mscorlib.resources
      Assembly-Version: 4.0.0.0.
      Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
      CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_de_b77a5c561934e089/mscorlib.resources.dll.
      ----------------------------------------
      System.Windows.Forms.resources
      Assembly-Version: 4.0.0.0.
      Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
      CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
      ----------------------------------------

      ************** JIT-Debuggen **************
      Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
      Konfigurationsdatei der Anwendung oder des Computers
      (machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
      Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

      Zum Beispiel:

      <configuration>
      <system.windows.forms jitDebugging="true" />
      </configuration>

      Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
      Ausnahmen an den JIT-Debugger gesendet, der auf dem
      Computer registriert ist, und nicht in diesem Dialogfeld behandelt.


      @edit³: Wieder ein Bug ein deinen Settings :D
      Wenn ich den Wert Time to the next generation setzte und speichere, wird dieser auch wie gewünscht verwendet. Wenn ich die Form allerdings dann schließe und die Settings neu öffne steht in dem Feld wieder eine "10" drin

      Ich Antworte nach bestem Wissen und Gewissen. Ich übernehme keine Garantie für die Richtigkeit oder Fehlerfreiheit meiner Texte.


      Ich konnte dir helfen?
      - Das ist schön :) Ich würde mich über ein "Hilfreich" freuen ^^

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „misbe“ ()

      @misbe : Na super -.- :D

      zu 1) Konnte ich nicht reproduzieren, läuft einwandfrei bei mir :s
      zu 2) Selbiges, ich kann an allen vier Rändern mit der Mausklicken ohne Exception :s
      zu 3) Ist behoben, der Eventhandler des NUDs - ValueChanged hat die Variable geändert bevor sie gesetzt wurde -.-
      Update:

      Ich hab jetzt erstmal folgendes behoben, und die Datei damit auf vers. 1.1 gebracht:
      - Version aus dem Titel entfernen. (Jetzt nur noch Major und Minor)
      - BugFix: Der ResetButton in den Settings resetted nicht alle Einstellungen
      - Die Titel der Formen entspricht nicht mehr dem Namen
      - Nicht alle Formen werden als modaler Dialog behandelt so wie sie es eigentlich sollten

      Update im Startpost :)
      Des weiteren einmal ein Virencheck auf VT, 0 / 53, testet selbst ^^
      Ich finds einfach nur geil, mehr braucht man nicht sagen. Rundum gelungen. Top :thumbup:


      Link :thumbup:


      www.marius-gerum.de
      PHP lernen | Programmierung | Sonstiger Krempel
      Zum Blog | PHP lernen | GitHub | Gists | List of awesome