Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Shooter Kugeln, aber wie?? (https://www.delphipraxis.net/16327-shooter-kugeln-aber-wie.html)

Mautstelle 15. Feb 2004 13:33


Shooter Kugeln, aber wie??
 
Hi. Ich bastle fleissig an meinem GTA ähnlichen Spiel, jetzt ist das problem, dass
ich nicht weiss wie ich da Geschosse durch die Gegend fliegen lassen soll.

Bisher habe ich mal folgendes probiert:
-Eine Klasse erstellt (TImageSpriteEX)
-von dieser Klasse ein dynamisches Array angelegt

also jedes mal wenn ich schieße wird dem array ein Element zugefügt. Das heisst im Endeffekt, das
ein kleines Bild rumfliegt.

Meine Bedenken sind da nur der Speicher, wie soll ich die Elemente bei Kollisionen löschen, und was soll ich dann mit meinem array anstellen?? :gruebel:

Hat jemand von euch schon mal was ähnliches gemacht, oder wie würdet ihr das angehen??

thx für hilfe.

sakura 15. Feb 2004 13:50

Re: Shooter Kugeln, aber wie??
 
An der Stelle würde ich Dir eine TObjectList empfehlen, unit Contnrs, weitere Infos in der Online Hilfe. Arbeiten tut diese Klasse wie die TList und ähnlich der TStringList.

...:cat:...

Urba 17. Feb 2004 23:00

Re: Shooter Kugeln, aber wie??
 
Du hast doch vermutlich einen Timer o.ä. in dem du die Kollision abfragst. Wenn eine Kollision stattgefunden hat, dann kannst du per MeinArray[xyz].Free den benutzen Speicher wieder freisetzen.

Anschliessend hast du entweder die Möglichkeit, alle Einträge nach dem gelöschten nach vorne zu verschieben oder einfach frei zu lassen und bei einem neuen "Schuss" einfach die oder eine andere leere Stelle besetzen.

Nachteil von Verschieben :

Speicherverbrauchend, da du dann wieder die Liste durchgehen musst bis zum ersten freien Platz, allerdings erleichtert es das spätere Einfügen ungemein.

Nachteil von Einfach Löschen :

Bei jedem neuen einfügen muss im Prinzip die ganze Liste durchgegangen werden, bis das erste freie Plätzchen kommt. Eigentlich die bessere Lösung (oder das von sakura)

Haegar 18. Feb 2004 07:45

Re: Shooter Kugeln, aber wie??
 
hi, du könntest ja auch einfach bei der methode von urba noch zusätzlich eine variable einführen, die sich die position des zu löschenden objektes im array merkt (quasi den index), und diese beim nächsten schuss dazu benutzen den schuss, ohne lang im array suchen zu müssen, gleich an die jeweilige freie stelle zu basteln!

PS: ich habe in meinem weltraumballerspiel auch kein array für die schüsse benutzt, und so brauch ich mir keine gedanken über löschen und verschieben machen, und hat alles wunderbar geklappt!

gruss haegar


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