![]() |
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? |
AW: per Script erstellte Images in eine Array eingliedern
Ich hab mir dein Script nicht angeguckt. Aber das hier...
Delphi-Quellcode:
bitte abändern in
Charakter: array [1..20] of TImage;
Delphi-Quellcode:
Charakter: array [0 .. 19] of TImage;
|
AW: per Script erstellte Images in eine Array eingliedern
Ok, aber es hat auch mit [1..20] in anderen Projekten funktioniert...
|
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 |
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.
|
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.
|
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:
Kleiner Tipp: Delphi verzeiht viel. Aber lerne schon jetzt, dass man Groß- und Kleinschreibung respektieren sollte.
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; |
AW: per Script erstellte Images in eine Array eingliedern
Ok. Danke erstmal :)
|
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)
|
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 21:54 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 by Thomas Breitkreuz