Bonjour !
Je me suis remis récemment à coder, et j'ai donc bien entamer la réalisation d'un casse brique, avec notre bibliothèque préférée. Jusque là, rien d'original ...
J'ai juste un petit soucis, et un problème d'ordre plus général, mais avant, quelques infos :
Organisation du programme :
La classe Jeu gère les évènements, provoque l'affichage régulier de toutes les briques, balle, etc ..
Le joueur est en fait juste un rectangle contrôlé par la souris (la classe jeu lui indique ou se placer)
La balle, bah voilà ... et idem pour
les briques.
Le principe du truc : J'utilise des collisions cercle/rectangle entre balle et brique/joueur.
Le jeu test à chaque affichage les collisions balles/reste, et si il y lieu, lance la fonction choc de la balle.
La balle rebondis, et c'est elle qui envoi le signal de choc à la brique.
Petite subtilité, j'ai fais en sorte que la balle ne puisse pas rebondir deux fois contre le même objets si elle n'a pas choqué contre autre chose avant (elle choquait, mais n'avait pas le temps de partir parfois, donc rechoquait). La détection des collisions et chocs fonctionne à merveille.
MAIS :petit soucis : lorsque je casse une brique, certaines (aléatoire ?) scintillent une fois ! -> elle ne sont manifestement pas affichées pour une seule frame , mais là, bah je coince ...
-> problème connu ? (j'ai mis le frame limit à 400) ou alors j'ai vraiment un plantage quelque part ?
Mais on a aussi le problème : les rebonds !
Comment j'ai fais :
baballe choque sur brique -> on rebondis.
Si : le projeté du cendre de la balle est sur un segment horizontal (vertical), on inverse la vitesse horizontale (verticale respectivement) -> le point de choc est sur un segment.
Si ce n'est pas le cas, on est plus ou moins dans un angle :
(le schema est normalement en fichier joint, je ne sais pas trop comment ça marche
)
la balle arrive avec une vitesse rouge, de norme V. J'ajoute à ce vecteur le vecteur bleu (ici de coordonnées (1,1), de norme 2*V), on calcule le vecteur vert, vitesse finale de la balle, en lui redonnant une norme de V.
c'est pas trop mal, et ça règle le cas pathologique de la balle avec vitesse orange, mais qui tape dans le coin !
SAUF QUE : mettez deux briques à coté, et tapez dans le coin de l'une : la balle rebondis sur un angle, alors qu'elle est face à une droite (comme ceci : _______|________ )
Comment faire pour avoir de jolis rebonds tout beaux ?? Voilà c'est mes deux problèmes du moments, j'ai nommé ce sujet WIP, car ce sera pas les derniers problèmes je pense, alors autant éviter le surnombre de sujets !
EDIT : les fichiers joins ne se voient pas à la prévisualisation, mais ça marche !
[attachment deleted by admin]