Collision

Résolu
panicq Messages postés 66 Date d'inscription mardi 14 novembre 2000 Statut Membre Dernière intervention 18 janvier 2010 - 7 oct. 2007 à 11:40
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009 - 7 oct. 2007 à 13:05
Bonjour à tous,

J'aurais bien aimé savoir comment faire une coliision entre deux picture box; je m'explique: l'utilisateur peut déplacer un picture box à l'aide du clavier et j'aurais aimé savoir commetn faire pour que quand il rentre en collision avec un autre picture boc un message box affiche perdu! En quelque sorte je voudrais faire les base d'un jeu!

Merci d'avance!
A+

5 réponses

VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009
7 oct. 2007 à 13:05
Met le "Réponse accapté" pour que les autre s'y retrouvent stp
3
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009
7 oct. 2007 à 12:18
Salut

Il faut que tu compares les positions des picturebox en x et en y pout en déduire si elles sont superposées:

if pic1.top < pic2.top + pic2.height then 'Premier test: l'image n'est pas en dessous
    if pic1.top + pic1.height > pic2.top then 'Deuxième test: l'image n'est pas au dessus
       if pic1.left < pic2.left + pic2.width then'Troisème test: l'image n'est pas à droite
          if pic1.left + pic1.width > pic2.left then 'Quatrième test: l'image n'est pas à gauche
             'Si arrivé jusqu'ici alors il y a collision
             MsgBox "Collision!"
          endif
       endif
    endif
endif

Voilà il y a surement des moyens plus optimisés mais j'ai dissocié pour que tu comprenne. Si ce n'est pas le cas dis le moi!

VBGenesis
0
panicq Messages postés 66 Date d'inscription mardi 14 novembre 2000 Statut Membre Dernière intervention 18 janvier 2010
7 oct. 2007 à 12:37
Merci mais le probleme c'est que ca marche pas car moi j'ai sur le picturebox1 une fonction qui permet de le déplacer avec les fleches directionneles:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    With Picture1
        Select Case KeyCode
            Case vbKeyUp:       .Top = .Top + 100
            Case vbKeyDown:     .Top = .Top - 100
            Case vbKeyLeft:     .Left = .Left + 100
            Case vbKeyRight:    .Left = .Left - 100
        End Select
    End With
End Sub
Private Sub Form_Load()
  Me.KeyPreview = True
End Sub

Voila alors si vous pouvez m'aide a trouver la collision qui marche avec ce code ca serait cooooool!!
Merci à tous,
0
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009
7 oct. 2007 à 12:40
Qu'est-ce qui ne marche pas? Tu met le code que je t'ai donné à la fin de ton KeyDown pour qu'il soit executé à chaque pression de touche et le tour est joué!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
panicq Messages postés 66 Date d'inscription mardi 14 novembre 2000 Statut Membre Dernière intervention 18 janvier 2010
7 oct. 2007 à 13:03
Merci j'ai réussi!

A+
0
Rejoignez-nous