2010-02-12 6 views
0

Salut les gars mon code pour la détection de collision est la suivante i besoin de boucle à travers 55 photos sur la principale forme // étrangers sont nommés alien1, alien2 ect // image2 est l'objet Collison (la balle)Aide looping Photos

cODE EST TURBO DELPHI

procedure TForm1.TimeralienshotTimer(Sender: TObject) 
var 
    ax2 : integer; 
    bx2 : integer; 
    ay2 : integer; 
    by2 : integer; 
    alienX : array[1..55] of integer; 
    alienY : array[1..55] of integer; 
    Index: Integer; 
begin 
    for index := 1 to 55 do 
    alienX[index]:= alien([index]).left <--- the problem is this code here !!!! 
    ax2 := alienX + 21; 
    bx2 := Image2.left + 10; 
    ay2 := AlienY + 25; 
    by2 := Image2.top + 24; 
    if ax2 >= alienX then 
    if alienX <= bx2 then 
     if ay2 >= image2.top then 
     if alienY <= by2 then 
     begin 
      alien[index].Visible := false; 
      Image2.top := 875; 
      Image2.left := 648; 
      Timershotmovment.Enabled := false; 
     end; 
end; 
+0

quelle langue ??? – dusoft

+0

le code est TURBO DELPHI –

+0

Vous devriez vraiment formater votre code en tant que tel. Utilisez le bouton d'échantillon de code. En savoir plus sur la mise en forme de vos messages ici: http://stackoverflow.com/editing-help –

Répondre

-1

Je reformater votre code source.

Il ressemble à un devoir, donc je vais donner quelques conseils pour l'obtenir résolu:

  • vous assurer d'obtenir le code à l'intérieur et à l'extérieur de la boucle utiliser un commencer ... fin bloquer pour cela (comme vous l'avez fait à l'intérieur plus si ... puis).
  • obtenir les coordonnées X ou Y de tous les aliens ne nécessite pas un tableau séparé. Il suffit d'utiliser [Index] Alien .Left et [Index] Alien .Top
  • ne pas utiliser littérales codées en dur (21, 10, 25, 24, 875, 648). Faites-en soit des constantes, ou obtenez ces données au bon endroit (il y a probablement quelque chose sur votre formulaire qui définit ces nombres).
+0

Je soupçonne qu'il veut indexer les variables distinctes alien1 ... alien54 comme tableau. Les tableaux de composants VB sont similaires. –

1
for index := 1 to 55 do 
    alienX[index]:= alien([index]).left <--- the problem is this code here !!!! 

Deux choses:

  1. "Le problème est ce code ici" - Quel est le problème? Vous n'en avez pas parlé, ni dans le sujet ni dans la question elle-même.

  2. Le typecast que vous tentez de créer lorsque le "problème" apparaît apparemment ne peut pas fonctionner. Vous ne pouvez pas convertir un index de type tableau entier en type alien (qui n'existe nulle part dans votre code, btw - vous avez déclaré deux tableaux entiers nommés alienX et alienY, mais rien n'a été déclaré comme simplement étranger).

Si votre intention était simplement de copier le contenu de alienY dans le tableau alienX, vous pouvez utiliser ceci:

for i := 1 to 55 do 
    alienX[i] := alienY[i]; 

Ou, mieux encore dans le cas où les limites des tableaux doivent changer à l'avenir :

for i := Low(alienX) to High(alienX) do 
    alienX[i] := alienY[i]; 

Cependant, puisque vous essayez d'accéder à quelque chose avec un « gauche » la propriété, qui est probablement pas ce que vous avez l'intention. Cependant, sans savoir exactement ce qu'est un "alien" et ce qu'il contient, il est difficile d'être plus précis.

Une suggestion pour le futur? Lorsque vous dites que vous avez un «problème», il est utile de dire aux gens quel est exactement le «problème».