![]() |
Frage zu array
Delphi-Quellcode:
Es handelt sich hier um ein Spiel :coder: , das hier is aber nur ein Beispiel.
var
Player:array[0..1] of TPlayer; Enemy:array[0..1] og TEnemy; Habe für das Spiel einen Lvl-editor gebastelt. Nun habe ich folgenden Code bei OnCreate:
Delphi-Quellcode:
Vorher wurde aus einer Textdatei herausgelesen, wieviele sections sie beinhaltet. In diesem Fall wären es zB. 4.
for i:=0 to (sections.Count-1) do
Delphi-Quellcode:
(s und t sind für mein Problem nicht wichtig. Unschwer zu erkennen sind es die Koordinaten)
if typ=1 then begin
with TPlayer.Create(DXSpriteEngine1.Engine) do begin Player[i] := TPlayer.Create(DXSpriteEngine1.Engine); Player[i].Image:=Form1.DXImageList1.Items[0]; Player[i].x:=strtoint(s)*32; Player[i].y:=strtoint(t)*32; end; end; if typ=2 then begin with TEnemy.Create(DXSpriteEngine1.Engine) do begin Enemy[i] := ETnemy.Create(DXSpriteEngine1.Engine); Enemy[i].Image:=Form1.DXImageList1.Items[0]; Enemy[i].x:=strtoint(s)*32; Enemy[i].y:=strtoint(t)*32; end; end; So, nun sollte er 2 Spieler und 2 Gegner kreiren. Macht aber aber deswegen nicht, da zB. die ersten 2 sections vom typ 1 sind und die nächsten 2 vom typ 2. Das heisst nun: Player[0]... Player[1]... Enemy[2]... Enemy[3]... Wie man nun unschwer erkennen kann, darf es ja kein Enemy 2 oder 3 geben. Richtig müsste es nämlich so lauten: Player[0]... Player[1]... Enemy[0]... Enemy[1]... Wie kann ich dies nun machen?? :gruebel: |
Re: Frage zu array
"i mod 2" gibt entweder 0 oder 1!
0 mod 2 = 0 1 mod 2 = 1 2 mod 2 = 0 3 mod 2 = 1 usw. |
Re: Frage zu array
Und wenn da nun 20 Players und 50 Enemies sind?? Wie geht das dann?? Kann man das dann überhaupt verwenden??
PS: Das mit dem laden hab ich eigentlich schon geschafft, halt nur umständlich mit einigen Variablen. Falls es eine bessere Lösung gibt, immer her damit. Hab aber eine andere Frage. Wie kann man die Grösse eines arrays während dem Projekt festlegen? |
Re: Frage zu array
Moin!
Verwende doch einfach nicht eine Variable (i) für beide Typen sondern 2 getrennte und zähle die getrennt hoch bzw. setze die eine dann immer wieder auf 0 zurück, wenn ein neuer "Block" kommt. MfG Muetze1 |
Re: Frage zu array
also so in etwa:
Delphi-Quellcode:
//player
for i:=1 to PlayerAnzahl do with TPlayer.Create(DXSpriteEngine1.Engine) do begin Player[i] := TPlayer.Create(DXSpriteEngine1.Engine); Player[i].Image:=Form1.DXImageList1.Items[0]; Player[i].x:=strtoint(s)*32; Player[i].y:=strtoint(t)*32; end; for i:=1 to EnemyAnzahl do with TEnemy.Create(DXSpriteEngine1.Engine) do begin Enemy[i] := ETnemy.Create(DXSpriteEngine1.Engine); Enemy[i].Image:=Form1.DXImageList1.Items[0]; Enemy[i].x:=strtoint(s)*32; Enemy[i].y:=strtoint(t)*32; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz