Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Lösung für 2D Brett (https://www.delphipraxis.net/133988-loesung-fuer-2d-brett.html)

KahPee 13. Mai 2009 11:57


Lösung für 2D Brett
 
Hallo,
so jetzt bin ich soweit, dass ich meine zweite Frage stellen muss, da ich an einer Stelle nicht mehr weiter weis.
Ich bin dabei ein Spiel Brett in 2D mit 7*7 Feldern zu erstellen, das ist soweit kein Problem. Für jedes Feld gibt es nun ca. 12 (evtl nen bisschen mehr) verschiedene Grafiken, die unter gewissen Bedingungen auf dem Feld erscheinen können. Nun die Frage wie man das realisiert.
Eine Möglichkeit (die ich auch hinkriegen würde) ist auf jedes Feld alle 12 Grafiken zu legen und diese im Laufe des Spiels mit visible := True/false an und auszuschalten. Allerdings ist dieses zum einen recht umständlich und zum anderen hat das ganze eine recht lange Ladezeit, da meines Wissens beim Starten auch die versteckten Grafiken geladen werden.

Ich weis nicht ob dieses in irgendeiner Art und weise mit einem Record realisierbar ist, da jedes Feld zusätzlich noch andere Eigenschaften bekommen muss (X-, Y- koordinaten auf dem Brett, und anderes)

Vielen Dank schon mal im Voraus


KahPee

quendolineDD 13. Mai 2009 12:04

Re: Lösungs für 2D Brett
 
Mein Vorschlag wäre ein Panel, welches eine Größe von 7* Feldhöhe x 7* Feldbreite hat. Auf das Panel-Canvas "kann was" (Wortspiel) gezeichnet werden und so kannst du dann auch die Bilder je nach ihren Bedingungen aufzeichnen.

KahPee 13. Mai 2009 12:06

Re: Lösungs für 2D Brett
 
Mh, ich bin da Anfänger, daher Frage ich nochmal nach was genau du gemeint hast. Sorry, dass ich mich da etwas schwerer tue aber es wäre nett wenn du, dass nochmal ein bisschen genauer erläutern könntest.

Vielen Dank


Edit: Gibt es irgendeine create anweisung für Bilder? Dann müsste ich die einzelnen Bilder irgendwo doch nur einmal deklarieren und könnte sie dann wenn "iwas passiert" einfach an bestimmter Stelle erzeugen, dann ist jedes Bild im prinzip nur einmal vorhanden. Ich meine, dass man auf so ein Bild dann ähnlich wie auf eine vorherdefinierte Prozedur zugreifen kann. Gibt es sowas?

sirius 13. Mai 2009 12:06

Re: Lösungs für 2D Brett
 
Ich würde eine Klasse A bauen in der alle Bilder einmalig geladen werden (in eine Liste von TBitmap).

Dann würde ich die Klasse B bauen (evtl. von TImage ableiten), welche ein Feld repräsentiert. Diese Klasse bekommt beim erstellen eine Referenz auf Klasse A, damit es sich von dort per Index das entsprechende Bild holen kann. Und jetzt hat Klasse B eine Methode, welche sagt, dass jetzt Bild Nummer 4 anzuzeigen ist, dann kopiert sie sich eben aus Klasse A bild nummer 4 und fertig.

KahPee 13. Mai 2009 12:10

Re: Lösungs für 2D Brett
 
OH, siehe mein Edit oben (da warst du schneller)... genau an soetwas habe ich gedacht. Kannst du mir einmal ein Beispiel geben wie ich in einer Klasse ein Bild definiere?

sirius 13. Mai 2009 12:12

Re: Lösung für 2D Brett
 
Für ein Bitmap:
Delphi-Quellcode:
(var) Bitmap:TBitmap;
...

Bitmap:=Tbitmap.create;
Bitmap.Loadfromfile(dateiname);


...
Am Ende irgendwann dann Bitmap.free

KahPee 13. Mai 2009 12:53

Re: Lösung für 2D Brett
 
Ich gucke mal kurz ob ich die Syntax verstanden habe:
Zitat:

(var) Bitmap:TBitmap; // damit wird eine variable (für alle Bilder) vom Typ Tbitmap
//(ist automatisch deklariert) deklariert
...

Bitmap:=Tbitmap.create; // Platzhalter für das Bild wird kreiert
Bitmap.Loadfromfile(dateiname); //Befehl um den platzhalter durch das eigentliche Bild zu ersetzen


...
Am Ende irgendwann dann Bitmap.free // den Befehl verstehe ich nocht nicht...
So dann halt wie oben beschrieben die eine Frage, was bedeute Bitmap.free?
Ist das um das Bild wieder durch einen Platzhalter zu ersetzen?

Wie deklariere ich die eigentliche Bildklasse? Reicht das wirklich das einfache: (var) Bitmap:TBitmap;?

Die Klasse für das Feld muss im Prinzip ja auch einen Platzhalter enthalten oder? Wie definiere ich soetwas?

Wie sähe der Befehl für ein .jpg aus?


Sorry für diese Vielen Fragen, ich bin halt noch blutiger Anfänger, ich hoffe, dass ich irgendwann mal in der Lage bin die mir entgegengebrachte Hilfe zurückzuzahlen...

mfg Kahpee

markus5766h 13. Mai 2009 13:00

Re: Lösung für 2D Brett
 
Hallo,

Bitmap.Free

benötigst Du, damit der reservierte Speicher wieder
freigegeben wird, wenn dein Programm geschlossen wird.

Der Befehl lässt sich gut im Ereignis OnClose anwenden.

SimStar001 13. Mai 2009 13:06

Re: Lösung für 2D Brett
 
Hallo KahPee,

schau mal auf die Seite und lies dir das durch! ich denke da bekommst du auch ne gute Anregeung wie man sowas realisieren kann!

http://www.christian-stelzmann.de/artikel/crashkurs.htm

Satty67 13. Mai 2009 13:12

Re: Lösung für 2D Brett
 
TImageList wäre dann noch eine fertige Komponente, die Bilderlisten verwaltet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 Uhr.
Seite 1 von 4  1 23     Letzte »    

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