Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Conway's Game Of Life (GoL); auch noch von mir (https://www.delphipraxis.net/140594-conways-game-life-gol-%3B-auch-noch-von-mir.html)

Lumpiluk 21. Sep 2009 20:23


Conway's Game Of Life (GoL); auch noch von mir
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi zusammen!
Ich habe (wie viele andere ja auch) irgendwann mal ein Game Of Life programmiert. In letzter Zeit habe ich es nun noch um einiges verbessert und erweitert und vor Allem übersichtlicher gestaltet :)

Den Source habe ich inzwischen auch beigelegt. Vielleicht könnt ihr ja trotz der mangelnden Überschaubarkeit etwas damit anfangen :oops:

Ich freue mich über Kritik und Verbesserungsvorschläge!
Ich bin mir nicht sicher, ob ich das hier posten darf, aber hier ist schonmal eine Vorschau als Video. Falls es doch nicht erlaubt sein sollte, sagt mir bescheid (in den Regeln habe ich dazu jetzt nichts gefunden).

Hier ein paar Features:
- variable Feldgröße mit Torusfunktion (was z.B. rechts rausgeht kommt links wieder rein)
- anpassbare Geschwindigkeit
- beliebiges setzen von Figuren aus einer Auswahl von ca. 370 Stück (fast alle aus diesem Lexicon wurden eingebaut)
- Farbe anpassbar (mit 'Rainbow'-Funktion: automatischer Farbwechsel)
- Zufallsfüllung der Fläche
- Generationenzähler
- Möglichkeit, eigene Figuren zu speichern
- Vollbildmodus und Hauptfenstertransparenz (aus irgendeinem Grund funktioniert die Transparenz nicht ganz mit den Optionen: danach sind sie immer hinter der Hauptform...)
- Zoom


//edit:
Hier ist die neue Version! Danke für die Hinweise 8) :-D
Falls euch noch was stört: sagt Bescheid

Delphi-Laie 21. Sep 2009 22:08

Re: Conway's Game Of Life (GoL); auch noch von mir
 
Zitat:

Zitat von Lumpiluk
Ich freue mich auf Kritik und Verbesserungsvorschläge!

Aber gern - mir sind sofort zwei Dinge aufgefallen:

1. Die Anzahl der Zellen ist unabhängig von den Fensterabmessungen. Ich erinnere mich dunkel, daß ich mal ein solches Programm hatte (sicher irgendwo gebrannt, doch dafür werde ich mich nicht durch den CD-Stapel kämpfen, sieh mir das bitte nach), das bei vergrößertem Zoom, am besten maximiert, mehr Zellen zur Verfügung stellt. Das bietet Dein Programm leider nicht.

2. Aaaaaber: Was links am Rand verschwindet, taucht rechts wieder auf, analog alle anderen Richtungen. Damit wird Dein Spielfeld letztlich ein Baustein einer periodischen Parkettierung einer unendlichen Ebene. Mit diesem Trick eine unendliche Fläche (fast) zu simulieren, so etwas erlebte ich bei solchen zellulären Automaten noch nicht.

Viel Freude beim weiteren Feinschliff!

Medium 22. Sep 2009 00:16

Re: Conway's Game Of Life (GoL); auch noch von mir
 
Zitat:

Zitat von Delphi-Laie
unendlichen Ebene.

Um genau zu sein ist dies ein 2-Torus, und keineswegs unendlich. Das aber wirklich nur als Spitzfindigkeit am Rande :stupid:

Delphi-Laie 22. Sep 2009 10:19

Re: Conway's Game Of Life (GoL); auch noch von mir
 
Zitat:

Zitat von Medium
Zitat:

Zitat von Delphi-Laie
unendlichen Ebene.

Um genau zu sein ist dies ein 2-Torus, und keineswegs unendlich. Das aber wirklich nur als Spitzfindigkeit am Rande :stupid:

Yo, der Punkt geht an Dich. Ich verwechselte unendlich und schrankenlos (hoffentlich irre ich mich nicht schon wieder). Eine Ebene oben und unten sowie links und rechts zu vereinen, gibt einen Torus. Also, Conway Spiel auf der Fläche eine Torus', dargestellt in der Ebene.

himitsu 22. Sep 2009 10:56

Re: Conway's Game Of Life (GoL); auch noch von mir
 
Was ich unhandlich finde ist, daß immer nur beim Loslassen der Maustaste ein Feld gesetzt wird.
> ich fännde es prakischer, wenn dieses beim Drücken und auch beim Verschieben pasiert.
(OnMouseDown und OnMouseMove)


Da gibt es doch rechts und unten soeine Begrenzungslinie ... da hätte ich erwartet, daß die Figuren/Felder nur innerhalb (links über) des "Spielfeldes" bleiben und nicht auch auf der anderen Seite (außerhalb).


Beim Einfügen von Figuten wäre es schön, wenn vorm Einfügen man die Figur schon sehen kann, also z.B. wie so ein Schatten im Spielfeld, da wo dann die Felder eingefügt werden, wenn man klickt.

Die [O.K.] Buttons in Figure Settings und Speed Options würde ich Close nennen, da die Einstellungen ja sofort übernommen werden und damit nur das Festerchen geschlossen wird.

Und nun noch das Wichtiges:
Mach bitte den globalen Tastaturhook raus!
Hab mich schon gewundert, was hier los ist und warum soeine Titelleiste ständig über's Bild husch, wärend ich diesen Beitrag hier verfaßte und deine Anwendung im Hintergrund lief,
bis ich merkte, daß sie auf die Tastatureingaben im FF regaierte.


PS: wozu ist eigentlich das Setup?
(hab die 7zip (exe) direkt entpackt und nötig scheint diese ja nicht zu sein :gruebel:

[add]
ach ja, diese kleinen Optionsdialog könnten doch gleich neben dem Spielfeld positioniert sein, damit man sie nicht erst noch verschieben muß.


Ansonsten isses ja ganz nett :thumb:

Luckie 22. Sep 2009 11:02

Re: Conway's Game Of Life (GoL); auch noch von mir
 
Zitat:

Zitat von himitsu
Mach bitte den globalen Tastaturhook raus!

Das ist doch nur der zugehörige Keylogger. Wenn er den entfernt, verliert das Programm doch jeglichen Sinn und Zweck. ;)

Jetzt mal im Ernst, wozu braucht man bei einer normalen Anwendung einen globalen Tastaturhook?

Sherlock 22. Sep 2009 11:46

Re: Conway's Game Of Life (GoL); auch noch von mir
 
Sehr schönes Programm, aber:
Der Generationszähler wird genau wann zurück gesetzt? :)

Sherlock

Lumpiluk 22. Sep 2009 13:58

Re: Conway's Game Of Life (GoL); auch noch von mir
 
So, danke erstmal an alle!

Zitat:

Zitat von Sherlock
Sehr schönes Programm, aber:
- Der Generationszähler wird genau wann zurück gesetzt?

Zurückgesetzt wird der Zähler normalerweise beim setzen einer neuen Figur. Dafür werde ich aber auch noch einen neuen Button im Menü einbauen.

- Das mit der Positionierung der Menüs dürfte eigentlich kein Problem sein.
- Naja, das Setup... :) Ich weiß, dass es Leute gibt, die sich mit PCs sehr schwer tun (mein Bruder zum Beispiel) und wenn die es immerhin geschafft hätten, die 7zip zu entpacken, wüssten die wohl immernoch nicht, wie sie das Programm starten sollen.
- Den globalen Tastaturhook hab ich drin, weil ich zuerst ein TMainMenu drin hatte und dann auf eine TToolBar umgestiegen bin. Dafür musste ich beim Menü automerge einstellen und dann waren plötzlich die Shortcuts nicht mehr da und ich bin auf getasynckeystate umgestiegen... Wie bekomme ich das besser hin?
- Den Torus kann man ausschalten
- Es stehen sehr wohl mehr Zellen zur Verfügung (Options -> Size of Workspace...). Allerdings werde ich wohl noch die TPaintBox in eine TScrollBox packen und eine Zoomfunktion einbauen.
- Und bei den Buttons gebe ich dir auch Recht ;)

So, wenn ich dann wieder zu Hause bin werde ich mich mal drum kümmern. :)

Lumpiluk 22. Sep 2009 20:23

Re: Conway's Game Of Life (GoL); auch noch von mir
 
So, die neue Version ist fertig. Viel Spaß damit ;-)

Achja, fast vergessen: Wenn ich beim zoomen das Feld zu groß mache, kommt ziemlich bald die Fehlermeldung "Für diesen Befehl ist nicht genügend Speicher verfügbar!" Woran liegt das? Ich vermute, dass es irgendwie mit der ScrollBox, dem Image oder der PaintBox zusammenhängt, von denen letztere ja immer größer werden. Das Image nicht mitwachsen zu lassen hat aber nicht viel gebracht und im Taskmanager wird auch garnicht so viel verbrauchter Speicher angezeigt (Firefox hat bei mir viel, viel mehr :) )...

HalloDu 22. Sep 2009 20:36

Re: Conway's Game Of Life (GoL); auch noch von mir
 
Ich gehe mal davon aus, dass du die Werte in einem dynamischen Array speicherst. Wenn du nun die Größe des Arrays mit SetLength bestimmst, wird dafür Speicher reserviert. Wenn nun der Array zu groß wird, muss nun zu viel Speicher reserviert werden, was zu deiner Fehlermeldung führt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:07 Uhr.
Seite 1 von 2  1 2      

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