![]() |
Delphi-Version: 7
mehere Bilder mit einem Array ansprechen
Hallo liebe Programmiergemeinde.
Bin neu hier und auch relativ neu mit dem Thema Delphi. Ich habe folgendes Problem: Ich programmiere gerade Bricks Brake und habe dazu mehrere Bilder erstellt, welche eben zerstört werden müssen. Berührt mein Ball ersteinmal den Rand des images, geht er in die If-Schleife rein, schaut von wo er kommt, in welchem Zustand er ist (damit meine ich die Anzahl, wie oft dieses Image schon getroffen wurde; dabei wird zudem ein neues Bild geladen (eine Mauer die eben etwas mehr kaputt ist)). Jedoch muss ich ihm bei jedem Bild nun einzeln zuweisen, wie mein ball abprallen, welchen zustand er nehmen (also welches Bild er laden) etc. Ich habe mit überlegt, dass man alle images in einem array erfassen könnte. Aber funtkioniert das überhaupt? Also mal stumpf ausgedrückt: If mein Ball >= irgendein Bild meines arrays [2..6}] then lade das ein neues Bild aus dem Bild des arrays [2..6], welches oben angesprochen wurde. Hoffentlich ist das verstänlich geschieben^^. Danke im vorraus für Antworten. |
AW: mehere Bilder mit einem Array ansprechen
also irgendwie verstehe ich zugegeben nicht was du machen willst.
Klar ist du hast einen Ball (denke mal auch ein Image) und mehrere Mauern, die verschiede "Zustände" haben können (z.b ganz, kleines Loch,halbkaputt,komplett kaput). So was du machen kannst, ist alle deine Mauern (also die images) in einen array tun. Dann kanst du sie mit einer for-schleife die geht so, durchgehen.
Delphi-Quellcode:
So, aber wie überprüfst du die Zustände? Mit einer Variablen (z.b. var Zustand : Integer) oder wie machst du das? wie lädst du dan die neuen Bilder zu den Zuständen? Haben die Dateien von den Bildern speziele Namen? z.b. Zustand1.bmp,Zustand2.bmp,Zustand3.bmp usw.
var I : Integer;
for I := 0 to High(arrayname) do begin //Hier deine if-Anweisung (IF ist keine Schleife nur so am rande xD :-D) end; Du müsstest mal bischen Code zeigen, Weil sonst kann man dir nicht helfen :-D. Ich weis der erste Beitrag ist der schwerste und mit dem anfangen mit Programmieren auch. :lol: |
AW: mehere Bilder mit einem Array ansprechen
>aber wie überprüfst du die Zustände?
die Zustände der einzelnen Bricks werden in einen array gespeichert 0 = ganz 1 = kleines Loch 2 = halbkaputt 3 = komplett kaputt mit dieser Info kann man das Bilder array ansprechen wenn also der Ball einen Brick berührt wird der Zähler im Brick array erhöht, damit weiss man welcher Brick und welchen Zustand |
AW: mehere Bilder mit einem Array ansprechen
Ich glaube das ist das was du in etwa suchst:
Delphi-Quellcode:
An dieser Stelle ein Tipp wie du dir unheimlich viel Arbeit sparen kannst. Entweder später im Code oder gleich im Record würde ich den Rect Bereich des Balkens ermitteln. Der Ball hat dann auch einen Rect Bereich. Was du dann einfach nur noch machen mußt ist zu überprüfen ob sich der Rect Bereich des Balls mit einem Rect Bereich eines Balkens überschneitet. Schon hast du einen Treffer.
type
TMeineBalken = record Balken: TBitmap; x: Integer; y: Integer; Zustand: Byte; end; const Balkenanzahl = 20; var MeineBalken: array[1..Balkenanzahl] of TMeineBalken; procedure AllesErstellen; var i: Integer; begin for i := 1 to Balkenanzahl do MeineBalken[i].Balken := TBitmap.Create; end; procedure AllesLoeschen; var i: Integer; begin for i := 1 to Balkenanzahl do MeineBalken[i].Balken.Free; end; procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin for i := 1 to Balkenanzahl do begin MeineBalken[i].Balken... MeineBalken[i].x... MeineBalken[i].y... MeineBalken[i].Zustand... end; end; |
AW: mehere Bilder mit einem Array ansprechen
Mir scheint das Konzept etwas ungeschickt, weil es IMHO nicht notwendig ist für jeden einzelnen "Brick" ein eigenes Bitmap mitzuschleppen.
Es gibt 4 unterschiedliche Bitmaps (ganz, Loch, halb kaputt, kaputt) also benötigt man 4 Bitmaps (meinetwegen in einem Array, obwohl ich eher zu einer TList raten würde). Jeder "Brick" merkt sich ja auch schon seinen Zustand, also wird beim Zeichnen einfach Zustand und Position ausgelesen und davon abhängig das entsprechende Bitmap aus der Liste an die Position gemalt. Das ist nicht nur schlanker sondern sorgt auch noch für die Trennung zwischen Logik und Darstellung. |
AW: mehere Bilder mit einem Array ansprechen
Zitat:
|
AW: mehere Bilder mit einem Array ansprechen
Liebe Kollegen, eure Vorschläge sind natürlich (wenn es hier eine Steigerungsform gäbe) richtiger. Aber man sollte sich immer bewusst sein wem man einen Tipp gibt. Natürlich könnte man eine Diskussion führen ob es nicht richtiger ist einem gleich richtig das Programmieren beizubringen. Ich stehe aber auf dem Standpunkt, dass einer zuerst das A richtig beherrschen sollte, bevor im als Vorschlag B, C, D, E und F gegeben werden. Was ich damit ausdrücken will: euer Konzepte sind besser, aber werden sie verstanden?
|
AW: mehere Bilder mit einem Array ansprechen
Das gilt aber nur, wenn A auch sinnvoll ist. Es ist imho in diesem Fall nicht sinnvoll und deshalb wurden bessere Alternativen genannt.
Grundsätzlich hast du aber recht, es ist besser eine verständliche, wenn auch nicht die Beste, Lösung zu nennen, als die "ultimative" welche dann die Meisten nicht meh verstehen. |
AW: mehere Bilder mit einem Array ansprechen
Zitat:
Er muss ja lediglich nun 2 Arrays benutzen. Der Hinweis auf TList war doch nur ein freundlicher Hinweis, dass es da noch etwas gibt, was das Handling vereinfacht. |
AW: mehere Bilder mit einem Array ansprechen
Zitat:
Was ich inzwischen gelernt habe ist einen vorher zu fragen ob er bereit ist sich einen Vorschlag anzuhören, bevor ich loslege. Wenn ein nein kommt, dann versuche ich es inzwischen auch nicht, sondern wir versuchen das Momentane zu optimieren. Ich glaube das hat auch etwas mit der Einstellung zu tun ob man eine eigene Idee umsetzt oder einer einem eine bessere Idee nennt. Ok, das war jetzt etwas Off Tipic, aber das war mein Hintergedanke. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 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