Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi zufällgie Karte laden (https://www.delphipraxis.net/70473-zufaellgie-karte-laden.html)

Penelopee 30. Mai 2006 21:16


zufällgie Karte laden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!

Spiele gerade ein bischen mit Karten rum.Ich möchte erstmal versuchen in einem Image eine zufällige Karte zu laden.Ich habe einen Ordner in dem alle 32 Karten enthalten sind und möchte eine zuällige Karte der 32 laden.Kann ich dafür random verwenden und wenn ja wie???
Mein Programmtext und die Karten im Anhang!!!

THX im vorraus!

Clane 30. Mai 2006 21:37

Re: zufällgie Karte laden
 
du könnest zu erst jeder karte eine zahl als konstante zuordnen und dann mit random() so viel karten ziehen lassen und am ende überprüfen ob eine karte (oder in dem fall zahl) 2 mal vorhanden ist wenn ja wird die karte gelöscht und eine neue gezogen

Penelopee 30. Mai 2006 21:42

Re: zufällgie Karte laden
 
sorry versteh ich nciht ganz.Kann ich mit random nicht einfach eine Karte ziehen???Warum muss ich Werte zuordnen und Karten dann immer löschen?????

mkinzler 31. Mai 2006 05:35

Re: zufällgie Karte laden
 
Hallo Penelopee,

Ich würde die Images am Programmstart alle einlesen, entweder erweiterst du deinen TEinzelkarte-Record um das Imgae oder verwendest eine ImageList wobei dann die Indices der Karte im Array der Karten mit denen der Bilder in der ImageList übereinstimmen.

Mit Random() wählst du dann zufällig eine Karte aus und kannst so das entsprechende Bild referenzieren.

Sascha L 31. Mai 2006 08:03

Re: zufällgie Karte laden
 
Hallo,

also alle Bilder schon am Anfang zu laden wäre bei 32 Bildern pure Speicherverschwendung.

Es reicht, wenn du am Anfang alle Bilder im Ordner ermittelst und die Dateinamen in den Record schreibst, also für jede Karte den Dateinamen in seinen Record.

Über Random ermittelst du dann die Zufallszahl und kannst dann über DeinArrayVomRecord[ermittelteZufallszahl].FileName das Bild laden.

pacman1986 31. Mai 2006 08:38

Re: zufällgie Karte laden
 
mkinzler Version ist Optimierter und schneller. Die Daten am Anfang schon zu laden macht im grunde keinen Unterschied. Sie aber zur Laufzeit wieder und wieder und wieder zu laden das kann schon auf den speed lasten :D (PS: Je nachdem wie groß die sind).

Sascha L 31. Mai 2006 08:49

Re: zufällgie Karte laden
 
Wieso?

Der Speed ist der im Endeffekt der gleiche, ob der Start nun einige Minuten dauert, weil alles erstmal geladen werden muss (was nervig ist!) oder ob zwischen durch mal ein Bild für ein paar SEkunden geladen werden muss. (Die Zeiten würden jetzt aber auch nur bei rieeeeesigen Bildern so hoch sein).

Man lädt doch nicht alle Bilder unnötig in den Speicher, weil man sie mal irgendwann brauch. Und wenn du schon am Rande die Dateigröße ansprichst, erst recht nicht. Stell dir mal vor ein Bild ist 2 MB groß. Das ganze mal 32 sind schon 64 MB, die unnötiger Weise flöten gehen und anderen Anwendungen fehlen.

pacman1986 31. Mai 2006 09:08

Re: zufällgie Karte laden
 
wenn ich wählen könnte zwischen einer Anwendung die am Anfang 30 sec mehr zum laden Brauch und eine die zwischendurch beim aufdecken einer neuen karte, sei es auch nur für 1 sec, sich immer nervigerweise aufhängt würde ich ersteres nehmen.

mkinzler 31. Mai 2006 09:27

Re: zufällgie Karte laden
 
Zitat:

Man lädt doch nicht alle Bilder unnötig in den Speicher, weil man sie mal irgendwann brauch. Und wenn du schon am Rande die Dateigröße ansprichst, erst recht nicht. Stell dir mal vor ein Bild ist 2 MB groß. Das ganze mal 32 sind schon 64 MB, die unnötiger Weise flöten gehen und anderen Anwendungen fehlen.
Und wenn 1 Bild erst 1 Gig hätte erst ;-)

Also in diesem Fall sind es gerade mal 32 Bilder a 7 KB, so daß es kein Problem sein sollte sie am Anfang zu laden. Wenn wirklich nur ein Bild benötigt würde, würde ich es auch später laden.
Vielleicht einigen wir uns j auf einen Kompromiss, legen am Programmstart nur die die Datenpfade ab, und laden wenn benötigt erst das Bild in die Imageliste.

ichbins 31. Mai 2006 10:33

Re: zufällgie Karte laden
 
Der Zugriff auf die Festplatte geht in jedem Fall viel langsamer als der Zugriff auf den Arbeitsspeicher. Wenn die Bilder jetzt nicht mehr haben wie 100MB dann solltest du sie auf jeden Fall am Anfang in den Speicher laden.

Jetzt stell dir mal vor du spielst AoEII oder so und immer wenn eine neue Einheit auf dem Bildschirm auftaucht oder sie sich dreht oder so musst du erst 0.1 sec warten :roll:

-> also: Einfach alle Bilder in ein array[0..31] of tbitmap laden und dann mit array[random(32)] drauf zugreifen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:56 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