tinux
Messages postés244Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention21 octobre 2013
-
4 nov. 2007 à 01:17
zavier666
Messages postés266Date d'inscriptionmardi 7 septembre 2004StatutMembreDernière intervention30 avril 2009
-
4 nov. 2007 à 16:34
Bonjour, j'ai deux billes dans deux rectangles
'***************** LE PACMAN ****************'
Public PacMan_X As Integer' << Position en X
Public PacMan_Y As Integer' << Position en Y
Public PacMan_W As Integer' << Largeur en Px
Public PacMan_H As Integer' << Hauteur en Px
'**************** LE MONSTRE ****************'
Public Monstre_X As Integer' << Position en X
Public Monstre_Y As Integer' << Position en Y
Public Monstre_W As Integer ' << Largeur en Px
Public Monstre_H As Integer' << Hauteur en Px
Je souhaite déterminer la collision entre les deux rectangles : si un point de l'un vient heurter l'une des bordures de l'autre...
Voici ce que j'ai commencé à faire... (sans trop de succès, ça marche pas très précisement, du coup j'ai peur de ne pas suivre la bonne voie.. qq chose de plus simple ?) :
'Cas Généraux If Monstre_X (PacMan_X + PacMan_W) And Monstre_Y PacMan_Y Then
Timer1.Stop()
MsgBox.ShowDialog()
End If If Monstre_X PacMan_X And Monstre_Y (PacMan_Y + PacMan_H) Then
Timer1.Stop()
MsgBox.ShowDialog()
End If
'Par La Gauche
If (Monstre_Y <= PacMan_Y) And (PacMan_Y <= (Monstre_Y + Monstre_H)) Then
If (Monstre_X <= PacMan_X) And (PacMan_X <= Monstre_X ) Then
Timer1.Stop()
MsgBox.ShowDialog()
End If
End If
'Par La Droite
If (Monstre_Y <= PacMan_Y) And (PacMan_Y <= (Monstre_Y + Monstre_H)) Then
If ((Monstre_X + Monstre_W) <= PacMan_X) And (PacMan_X <= (Monstre_X + Monstre_W)) Then
Timer1.Stop()
MsgBox.ShowDialog()
End If
End If
tinux
Messages postés244Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention21 octobre 2013 4 nov. 2007 à 16:00
Bon Bah voilà comment je suis sorti, ça marche plus ou moins bien..
Dim d As Integer
Dim i_PX As Integer
Dim i_PY As Integer
For i_PX = PacMan_X To (PacMan_X + PacMan_W)
For i_PY = PacMan_Y To (PacMan_Y + PacMan_H)
d = Sqrt((i_PY - Monstre_Y) ^ 2 + (i_PX - Monstre_X) ^ 2)
If d = 0 Then
Timer1.Stop()
MsgBox.ShowDialog()
Exit For
End If
Next
Next
Dim i_MX As Integer
Dim i_MY As Integer
For i_MX = Monstre_X To (Monstre_X + Monstre_W)
For i_MY = Monstre_Y To (Monstre_Y + Monstre_H)
d = Sqrt((i_MY - PacMan_Y) ^ 2 + (i_MX - PacMan_X) ^ 2)
If d = 0 Then
Timer1.Stop()
MsgBox.ShowDialog()
Exit For
End If
Next
Next