Delphi-PRAXiS

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

Redeemer 13. Okt 2017 18:21

AW: per Script erstellte Images in eine Array eingliedern
 
Delphi-Quellcode:
Charakter[1]:=(Self.FindComponent('Spieler') as TImage);

Glados 13. Okt 2017 18:28

AW: per Script erstellte Images in eine Array eingliedern
 
Zitat:

Zitat von Redeemer (Beitrag 1383280)
Delphi-Quellcode:
Charakter[1]:=(Self.FindComponent('Spieler') as TImage);

Das braucht er doch gar nicht. Guck dir mal meinen Code auf Seite 1 an.

Redeemer 13. Okt 2017 18:38

AW: per Script erstellte Images in eine Array eingliedern
 
Korrekt. War auch eher eine allgemeine Anmerkung.

mkinzler 14. Okt 2017 15:08

AW: per Script erstellte Images in eine Array eingliedern
 
Zitat:

Zitat von Glados (Beitrag 1383270)
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.

Ein dynamischer Array ja; ein statischer kann jede beliebige Grenzen haben.
Zitat:


Für dein Vorhaben brauchst du gar kein Array. Du kannst doch direkt auf "Spieler" und "GegnerX" zugreifen.
Wenn es auch Ziel ist, möglichst viel Performance zu verbraten.

Glados 14. Okt 2017 15:10

AW: per Script erstellte Images in eine Array eingliedern
 
Zitat:

ein statischer kann jede beliebige Grenzen haben.
Verstehe ich nicht. Ich habe doch gar nicht von einer Grenze geschrieben sondern nur davon, dass ein Array (Zählung) bei 0 anfängt, nicht bei 1.

mkinzler 14. Okt 2017 15:20

AW: per Script erstellte Images in eine Array eingliedern
 
Delphi-Quellcode:
Charakter: array [1..20] of TImage:
Untere Grenze: 1 Obere Grenze: 20

Delphi-Quellcode:
Charakter: array [0..19] of TImage:
Untere Grenze: 0 Obere Grenze: 19

Die Grenzen sind frei wählbar. Der resultierende Maschinencode ist sowieso identisch.


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