Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   per Script erstellte Images in eine Array eingliedern (https://www.delphipraxis.net/194069-per-script-erstellte-images-eine-array-eingliedern.html)

Mortex 13. Okt 2017 16:58

per Script erstellte Images in eine Array eingliedern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich programmiere zurzeit ein eigenes Jump ’n’ Run und bin gerade dabei es erst einmal zu strukturieren. Ich möchte alle Objekte im Spiel als Images verwenden, d.h.: Ich will z.Bsp. per Script in eine Groupbox namens "Groupbox Spielfeld" ein Image namens "Spieler" und 19 weitere Images namens "Gegner1" bis "Gegner19" erstellen. Wie das funktioniert, weiß ich bereits. Nun möchte ich aber diese frisch erstellten Images in eine Array "Charakter: array [1..20] of TImage;" einfügen, also wie: siehe angehängte Txt-Datei.
(Zu diesem Array kommen weitere Arrays für die Position, Vorhandensein und Textur der Images Hinzu, ebenfalls [1..20])
Delphi gibt mir aber eine Fehlermeldung aus: undefinierter Bezeichner Spieler, undefinierter Bezeichner Gegner1,.... undefinierter Bezeichner gegner19.

Was muss ich tun, dass Delphi diesen Code compilieren kann, sodass die 20 per Script erstellten Images gleich in die Array eingegliedert werden. Es wäre zu mühsam alle Images im Userform manuell zu erstellen und zu beschriften, da mindestens 100 weitere Images dazukommen werden, auf die ich dann auch zugreifen möchte (wie z.B. Hindernisse und Items)

Kann mir jemand mit diesem Problem helfen oder muss ich komplett umdenken?

Glados 13. Okt 2017 17:02

AW: per Script erstellte Images in eine Array eingliedern
 
Ich hab mir dein Script nicht angeguckt. Aber das hier...
Delphi-Quellcode:
Charakter: array [1..20] of TImage;
bitte abändern in
Delphi-Quellcode:
Charakter: array [0 .. 19] of TImage;

Mortex 13. Okt 2017 17:08

AW: per Script erstellte Images in eine Array eingliedern
 
Ok, aber es hat auch mit [1..20] in anderen Projekten funktioniert...

Glados 13. Okt 2017 17:16

AW: per Script erstellte Images in eine Array eingliedern
 
Dass das funktioniert ist klar. Aber es ist falsch denn ein Array hat eine 0-basierte Zählung. Ein Array fängt bei 0 an, nicht bei 1.

Charakter[0] => erster Eintrag
Charakter[1] => zweiter Eintrag
Charakter[2] => dritter Eintrag
usw

Redeemer 13. Okt 2017 17:18

AW: per Script erstellte Images in eine Array eingliedern
 
Was sollen denn diese ganzen Zuweisungen am Ende des "Scripts"? Derzeit funktionieren sie nicht, weil du den Array-Einträgen einfach irgendwelche Bezeichner zuweist, die gar nicht existieren.

Mortex 13. Okt 2017 17:43

AW: per Script erstellte Images in eine Array eingliedern
 
Wie ich es schon erklärt habe: Die Images werden erstellt und bekommen einen Namen. Und mit diesem Namen Sollen sie in der Array zugeteilt werden. Wie mache ich das, dass die Namen gefunden werden...sie sind da...aber nicht ganz. Und das verstehe ich als Anfänger nicht.

Glados 13. Okt 2017 17:50

AW: per Script erstellte Images in eine Array eingliedern
 
Für dein Vorhaben brauchst du gar kein Array. Du kannst doch direkt auf "Spieler" und "GegnerX" zugreifen.

Delphi-Quellcode:
(FindComponent('Spieler') as TImage). .....
(FindComponent('Gegner2') as TImage). .....

Oder halt so. Guck dir den Code genau an und lerne die Unterschiede zu deinem kennen!

Delphi-Quellcode:
var
 bit: TImage;
 i, AnzahlCharakter: Integer;
 Charakter: array [0 .. 19] of TImage;
begin
 AnzahlCharakter := Length(Charakter);

 bit := TImage.Create(GroupBoxSpielfeld);
 bit.Parent := GroupBoxSpielfeld;
 bit.Name := 'Spieler';
 bit.left := 0;
 bit.top := 10;
 bit.width := 50;
 bit.height := 50;
 bit.picture.LoadFromFile('Daten/Texturen/Leer.bmp');

 Charakter[0] := bit;

 For i := 1 to AnzahlCharakter - 1 do
  begin
   bit := TImage.Create(GroupBoxSpielfeld);
   bit.Parent := GroupBoxSpielfeld;
   bit.Name := 'Gegner' + InttoStr(i + 1);
   bit.left := 50 + i * 50;
   bit.top := 0;
   bit.width := 50;
   bit.height := 50;
   bit.picture.LoadFromFile('Daten/Texturen/Leer.bmp');

   Charakter[i] := bit;
  end;
end;
Kleiner Tipp: Delphi verzeiht viel. Aber lerne schon jetzt, dass man Groß- und Kleinschreibung respektieren sollte.

Mortex 13. Okt 2017 18:00

AW: per Script erstellte Images in eine Array eingliedern
 
Ok. Danke erstmal :)

Redeemer 13. Okt 2017 18:10

AW: per Script erstellte Images in eine Array eingliedern
 
Ach so der Name. Den spricht man aber so an:
Delphi-Quellcode:
(Self.FindComponent('Name') as TImage)

Mortex 13. Okt 2017 18:13

AW: per Script erstellte Images in eine Array eingliedern
 
Ich verstehe jetzt nicht so ganz, wo ich das einbauen soll


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