Oui c'est une idée aussi, mais ça doit être plus ou moins équivalent puisque là j'ai que 4 variables. J'ai juste fait comme godrik propose, une petite boucle for qui remplace le min si tab[i] < min. Et min je l'initialise à 10'000, parce qu'il s'agit de distances en pixels dans ma fenêtre 800x600, donc j'aurai jamais plus grand que 10'000
(Maintenant je pourrais aussi dire que min = a, puis tester avec b, c et d, m'enfin...)
Tikim, j'ai dit ca pour te faire realiser que ca ne sert a rien de trier. Mais dans le fond tbop2 a raison.
"Et min je l'initialise à 10'000, parce qu'il s'agit de distances en pixels dans ma fenêtre 800x600, donc j'aurai jamais plus grand que 10'000"
Ca c'est tres moche, je cautionne pas ![]()
C'est equivalent dans l'algorithme lui-meme (puisque dans un tableau tu feras des min/max de proche en proche) mais ca t'oblige a faire un tableau alors que dans ton code tu n'en avais pas forcement un a l'origine.
Dans la continuite de godrik regarde du cote du header limits.h ![]()
Oui en effet si ça peut m'éviter de faire un tableau c'est mieux.
Godrik
Oui je sais
J'ai remplacé par min = a, en premier lieu. M'enfin je crois que je vais devoir virer tout ça suite à un changement majeur de conception dans mon programme... Je fais un casse-brique (en SDL) et jusque là je considérais ma balle comme un carré. Mais au niveau de la hitbox c'est vraiment moche. Donc ma balle va devenir... Un cercle
Du coup les calculs sont plus les mêmes. Mais je devrai sûrement faire des recherches de min quand même.
Oui il faut faire du bounding-circle dans ton cas (c'est tres simple rassure toi). Par contre tu vas devoir faire des collisions entre bounding circle et des bounding box (ce qui est toujours simple mais un peu plus complique a gerer de maniere propre dans le code).
Concernant le sujet sinon je te conseille le meilleur cours abordable que je connaisse (et utilisant le SAT donc ils te fournissent pas non plus des algo totalement naifs) sur le sujet : http://www.metanetsoftware.com/technique/tutorialA.html
Oui j'ai aucun soucis avec la géométrie, mais j'ai un peu du mal à poser ça en code
Quand il s'agit que de maths y'a pas de soucis, mais quand ça s'insère dans la logique d'un programme/jeu, là j'ai du mal.
D'ailleurs je me demandais, si je veux tester, dans un if, une égalité, faut que je simplifie ?
Exemple : ça passe "if(RAYON*RAYON == centreX*centreX + (centreY - brique->pos.y)*(centreY - brique->pos.y))" ?
Donc ici il s'agit de tester s'il y a une/deux ou aucune intersection entre le cercle et la droite horizontale qui porte la brique et mon cercle.
Merci pour le cours, je vais lire ça. J'étais plus ou moins sur le tuto des collisions AABB du sdz, mais la partie sur les cercles est pas bien grande ![]()
Sinon tu peux toujours faire un carré englobant ta balle, ça sera moins précis mais pour un casse brique ça doit pouvoir passer.
C'est ce que j'ai actuellement mais c'est pas très efficace (même si je me doute bien que c'est mon code qui n'est pas assez optimisé).
Tu n'es pas content de la collision ? Ou bien ça rame ?
Si ça rame, tu peux optimiser ça, tester la collision de deux boites ça ne prend rien, par contre ce qui va péter tes perfs, c'est de faire un test de collision en brute force (tester la collision avec toutes les tuiles alors qu'elles sont à l'autre bout du jeu). Pour ça il y a des solutions simple ou plus complexe.
Si la collision te plait pas, je te conseille de chercher sur le net qqchose comme "collision Circle AABB". Par contre ça ne marchera que si les bords de la tuile sont parallèle aux axes. (AABB veut dire Axis Aligned Bouding Box)
Non ça rame pas trop je crois. Là où je suis pas content de la collision c'est quand la balle tape le coin d'une brique, parce qu'elle réagit comme une AABB et laisse donc des pixels de décalage.
Mais oui j'ai déjà lu pas mal de tutos sur du AABB-Circle et ça m'aide bien. Même si certains sont trop complexes.
d'ailleurs tbop2 ton lien est super intéressant, mais j'avoue ne pas avoir tout compris, j'ai un peu de mal avec l'anglais mathématique
Par contre pour le rebond j'ai pas besoin de quelque chose d'autant réaliste. Je me contenterai d'inverser une vitesse suivant la face ou les deux sur les coins.
Salut à tous !
Je n'arrive pas à retrouver comment s'appelle l'opération de "dé-pointeurisation" en C++, du genre : *this
Et deuxième pan de ma question : est ce que cette opération est couteuse lors de son exécution (même de façon infime) ?
Merci !
Ca s'appelle un déréferencement et oui, ça a un coup, en général une instruction MOV en plus.
C'est en partie pour ça qu'on passe les types primitifs(int, char, ...) par valeur plutôt que par référence, ça permet de les avoir en registre et ça évite les déréférencements inutiles. Même si le compilateur est capable d'optimiser au final.
Ok, merci bien ! Toujours bon à savoir.
Chaud, depuis 4h je cherche pourquoi dans mon jeu quand j'appuies sur flèche du bas, flèche de droite et espace une action se déroule pas alors que tout semblait correct ![]()
...Mais en fait c'est mon clavier qui réagit pas quand on appuie sur cette combinaison de touches
ça faisait pas des bruitages à une époque quand on appuyait en même temps sur des touches incompatible ?
ça m'aurait fait gagner du temps ![]()
ouais, ça faisait du bruit... sur le speaker interne du pc, le truc qu'ils enlèvent tout le temps sur les pc trop récents.
phénomène de ghosting. certains claviers de luxe en sont dépourvus. ![]()
dans les trucs debiles, j'ai passer deux heures ce week end a trouver comment intercepter les evenement de relache de la souris et de son deplacement en gtk.
Faites pas de gtk les gens! C'est mauvais pour votre sante mentale.
troll
jai taper 'gtk+ 3 mouse event' sur google le 1er lien ma donner la reponse ![]()
c'est ça, et tu le mets dans ton code et ça ne marche pas, bienvenue dans le monde merveilleux de la programmation.
![]()