Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zu array (https://www.delphipraxis.net/24690-frage-zu-array.html)

ISAS 24. Jun 2004 16:14


Frage zu array
 
Delphi-Quellcode:
var
Player:array[0..1] of TPlayer;
Enemy:array[0..1] og TEnemy;
Es handelt sich hier um ein Spiel :coder: , das hier is aber nur ein Beispiel.
Habe für das Spiel einen Lvl-editor gebastelt. Nun habe ich folgenden Code bei OnCreate:

Delphi-Quellcode:
for i:=0 to (sections.Count-1) do
Vorher wurde aus einer Textdatei herausgelesen, wieviele sections sie beinhaltet. In diesem Fall wären es zB. 4.


Delphi-Quellcode:
  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;
(s und t sind für mein Problem nicht wichtig. Unschwer zu erkennen sind es die Koordinaten)

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:

StefanDP 24. Jun 2004 16:30

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.

ISAS 24. Jun 2004 16:36

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?

Muetze1 24. Jun 2004 17:16

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

glkgereon 24. Jun 2004 18:28

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 23:45 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