AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Conway's Game Of Life (GoL); auch noch von mir
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Lumpiluk · begonnen am 21. Sep 2009 · letzter Beitrag vom 25. Sep 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Lumpiluk
Lumpiluk
Registriert seit: 25. Dez 2008
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

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)
Falls euch noch was stört: sagt Bescheid
Angehängte Dateien
Dateityp: exe 7z-sfx_ls_gameoflife_v2.8__setup_source_137.exe (1,47 MB, 29x aufgerufen)
 
Benutzerbild von Lumpiluk
Lumpiluk
 
#11
  Alt 22. Sep 2009, 20:51
Zitat von HalloDu:
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.
Es geht ja ums Zoomen, heißt: der Array bleibt gleich groß.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#12
  Alt 22. Sep 2009, 20:57
Die Fehlermeldung komm ja, wenn nicht genug Speicher verfügbar "war",
also es wird dann kein Speicher mehr reserviert und im Taskmanager kann man da garnichts erkennen.

Debugge doch einfach mal die entsprechenden Stellen und schau wo/wann es genau "knallt".
  Mit Zitat antworten Zitat
Medium

 
Delphi 2007 Enterprise
 
#13
  Alt 22. Sep 2009, 21:19
Diese Meldung ist mir ab und an begegnet, wenn ich mit GDI Ressourcen etwas großzügig wurde. Erstellst du evtl. oft und schnell hintereinander Bitmaps o.ä. neu? Wenn ja, versuch mal immer nur ein Mal zu erstellen, und dann immer wieder neu befüllen, statt schnellles Spiel aus .Free und .Create.
  Mit Zitat antworten Zitat
Benutzerbild von Lumpiluk
Lumpiluk
 
#14
  Alt 22. Sep 2009, 21:26
Problem mehr oder weniger gelöst: Habe jetzt die Image-/PaintBox-Größe auf 3000 Pixel beschränkt. Bei mir kam immer erst danach der Fehler.

.free und .create habe ich hier selber eigentlich garnicht verwendet (ist wie gesagt ein älteres Programm, das ich bearbeitet habe und damals kannte ich das noch nicht so).
  Mit Zitat antworten Zitat
Medium

 
Delphi 2007 Enterprise
 
#15
  Alt 23. Sep 2009, 00:54
Aha! Okay, das heisst dass dein Bitmap (oder wo auch immer du drauf zeichnest) einfach riesig geworden ist. Das erklärt das auch, da diese seitens Windows gewissen Grenzen unterworfen sind. Die "saubere" lösung wäre hier PaintBox/Bitmap/Image selbst auch wirklich nur genau so groß zu halten wie den tatsächlich sichtbaren Bereich, aber nur das hinein zu zeichnen was man gerade sehen soll. Das heisst dass du das Scrolling nicht "faul" (überspitzt gesagt) den Steuerelementen überlassen, sondern das selbst in die Hand nehmen solltest. Das wäre auch der übliche Weg bei allen möglichen grafischen Angelegenheiten. (Auch bei Direct3D z.B. wird mittels teilweise sehr aufwendigen Methoden im Vorfeld bestimmt welche Elemente man überhaupt sehen wird, bevor sie an DX zum Zeichnen geschickt werden. Auf lange Sicht zahlt sich das generell mächtig aus, in Ressourcensparsamkeit und oft auch Geschwindigkeit.)
  Mit Zitat antworten Zitat
Benutzerbild von Lumpiluk
Lumpiluk
 
#16
  Alt 23. Sep 2009, 12:27
Schade, das hört sich ziemlich aufwändig zu programmieren an...
Ich stell mir das jetzt so vor:
Ich hol das Image und die PaintBox aus der ScrollBox raus und mache unten und rechts je eine ScrollBar hin. Dann müsste ich wahrscheinlich den Maximalwert der ScrollBars immer an den Array anpassen, etwas davon abziehen, damit man plötzlich nicht garnichts mehr sieht und im OnPaint nur ab deren Positionen zeichnen. Mit irgendeinem Anderen Regler könnte man dann die Zellengröße bestimmen... Ist das so im Ansatz richtig?

Heute werde ich aber höchstwahrscheinlich wegen der Schule keine Zeit mehr dafür haben. Mal sehen, wie das Wochenende aussieht.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

 
Delphi 2009 Professional
 
#17
  Alt 25. Sep 2009, 01:14
Also so wie ich das gelesen habe stimmt das

Also wenn du nur die Pixel X=10-20 und y=5-15 sehen kannst, dann zeichnest du nur diese Pixel, aber rechnest natürlich immer mit allen Pixeln!

MfG
xZise
Fabian
  Mit Zitat antworten Zitat
Benutzerbild von Lumpiluk
Lumpiluk
 
#18
  Alt 25. Sep 2009, 17:08
So, erstmal großes Dankeschön an alle! Die eigene 'ScrollBox' dürfte soweit fertig sein und funktioniert bei mir bis jetzt wunderbar .
Zwischenzeitlich habe ich sogar noch Zeit gefunden, das Schnellstartmenü etwas zu erweitern und in beide Menüs eigene kleine Icons einzufügen.
Ich hoffe, es gefällt euch!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:18 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