[VB] Casse-briques, gestion des collisions
J-ed
-
Bissmark -
Bissmark -
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 :
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 ^^
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:
- [VB] Casse-briques, gestion des collisions
- Vb - Télécharger - Langages
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion photo gratuit - Guide
- Gestion des fichiers - Télécharger - Gestion de fichiers
- Gestion autorisation application android - Guide
3 réponses
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 ^^
Ps : j'ai fini le casse-briques depuis un bon moment, mais merci quand même ^^