[VB] Casse-briques, gestion des collisions

Fermé
J-ed - 13 avril 2011 à 14:42
 Bissmark - 30 mai 2011 à 12:42
Bonsoir à tous.
Je suis en train de programmer un casse-briques en Visual Basic, j'ai commencé donc par faire une balle qui rebondis correctement sur les bords avec un angle de 90°, qui rebondis contre une raquette qu'on peut bouger avec les flèches gauche et droite, qui tombe sinon en affichant un message de fin de partie.
Là, je commence à m'attaquer aux briques : pour faire un test de ma fonction collision, j'en mets une grosse au milieu et j'espère que la balle se comporteras normalement dessus (qu'elle rebondisse juste en inversant les coordonnées, je rajouterais la suppression de la brique en cas de collision plus tard).
J'inverse l'ordonnée de la balle si elle touche en haut ou en bas de la brique, l'abscisse si elle touche à gauche ou a droite.

Je vous résume donc mon problème et la façons dont j'ai pensé gérer tout ça en une image : http://img251.imageshack.us/img251/8938/questioncassebriques.png

Et voici donc ma fonction collision :

Private Sub collision()

            If (balle.Top = brique.Top + brique.Height And balle.Left <= brique.Left + brique.Width And balle.Left + balle.Width >= brique.Left) Or (balle.Top + balle.Height = brique.Top And balle.Left <= brique.Left + brique.Width And balle.Left + balle.Width >= brique.Left) Then
                bY = -bY
            End If
            If (balle.Left + balle.Width = brique.Left And balle.Top >= brique.Top + brique.Height And balle.Top + balle.Height <= brique.Top) Or (balle.Left = brique.Left + brique.Width And balle.Top >= brique.Top + brique.Height And balle.Top + balle.Height <= brique.Top) Then
                bX = -bX
            End If

    End Sub


Là, j'étais vraiment sûr de moi, et paf, ça bug complètement...
La balle traverse la brique par endroits, rebondis à coté, bref rien ne marche.

Voilà, j'espère avoir exposé le plus clairement possible mon problème, je vous remercie d'avance si vous voulez bien m'aider ^^

A voir également:

3 réponses

up !
0
Il faut que tu enlève le premier if
0
Le problème est réglé, il s'agit d'une chose simple : l'algo est bon, mais si on mets un vecteur de déplacement x, il faut que la taille et la localisation de la brique soit multiple de ce x , sinon d'un tic de timer à l'autre, l'égalité qui vérifie la collision n'est pas vérifiée.

Ps : j'ai fini le casse-briques depuis un bon moment, mais merci quand même ^^
0
Bonjour,
Est-ce qu'il serrai possible d'avoir la version corrigé de l'algo???
bonne journée
0