Zugriff auf Mehrere Objekte mittels einer Variable bzw. Problem bei Kollisionsabfrage
-
Also: ich habe folgendes Problem:
Ich habe mir eine Kollisionsabfrage gebastelt, die auch ganz gut funktioniert.die sieht so aus:
if (Form1->Components[z]->ClassNameIs("TImage")) { AnsiString Name = dynamic_cast<TImage*>(Form1->Components[z])->Name; if (Name.Pos("Image")) { if (((Worm1->Top < dynamic_cast<TImage*>(Form1->Components[z])->Top + dynamic_cast<TImage*>(Form1->Components[z])->Height) &&(Worm1->Width + Worm1->Left > dynamic_cast<TImage*>(Form1->Components[z])->Left) &&(Worm1->Left < dynamic_cast<TImage*>(Form1->Components[z])->Left + dynamic_cast<TImage*>(Form1->Components[z])->Width) &&(Worm1->Height+ Worm1->Top > dynamic_cast<TImage*>(Form1->Components[z])->Top))) { getroffen = true; } } }
Dieser Code geht ja immer nur für 'Worm1'
Leider möchte ich das Ganze mit ca.10 Würmern machen, und mir fällt keine geschickte Schleife ein.Als erste Lösung hab ich mir gedacht könnte man ja immer eine Änderbare variable für das 'Worm1' einsetzen.
Nur weiss ich nicht wie ich das machen soll.
Als zweite Lösung habe ich mir gedacht, könnte man einfach eine weitere for-Schleife machen, die ähnlich wie die jetzige for-schleife aufgebaut ist.
Nur fällt mir auch dabei keine geschickte lösung ein.Könnt ihr mir einen Anstoss geben?
Danke,
J0
-
Ich glaube in der FAQ gibts einen schönen Beitrag bzgl. Variablen ansprechen, nicht über Namen.
Les das mal.. ich glaube das adaptieren auf dein Problem dürfte relativ fix gehen.
-
wieso schreibst du hundert mal "dynamic_cast<TImage*>(Form1->Components[z])" statt einfach einmal einen zeiger des Typs TImage zu erstellen, dem das Ergebnis des dynamic_casts zuzuweisen und mit dem Zeiger zu arbeiten? liest sich doch viel schöner.
Und wieso sollte der Code nur für "Wurm1" gehen? mit der passenden Abfrage kannst du damit beliebig viele Bildchen verarbeiten...
-junix