Planches ne bougeant pas ping pong SDL langage C
Résolu/FerméDouglasmcdo Messages postés 10 Date d'inscription vendredi 26 août 2022 Statut Membre Dernière intervention 28 novembre 2023 - 2 sept. 2022 à 21:08
- Planches ne bougeant pas ping pong SDL langage C
- Langage ascii - Guide
- Ping port ✓ - Forum Programmation
- Son score snapchat ne bouge pas ✓ - Forum Snapchat
- Langage binaire - Guide
- D langage c ✓ - Forum C
5 réponses
26 août 2022 à 15:35
Bonjour,
Normal : tu ne fais que modifier la coordonnée Y de la planche, pas sa position
Modifié le 26 août 2022 à 16:57
Normalement ...
26 août 2022 à 18:26
Ta planche est quelque part, tu dessines ta planche.
Ta planche va ailleurs, tu dessines ta planche.
Ce que tu vois, c'est tout ce que tu as dessiné!...
2 sept. 2022 à 16:04
Mais cela ne résout pas du tout mon problème
2 sept. 2022 à 17:04
Bonjour,
Ne faudrait-il pas effacer puis ré afficher la planche à sa nouvelle position ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionModifié le 2 sept. 2022 à 18:44
Phil_1857 à écrit :
Ne faudrait-il pas effacer puis ré afficher la planche à sa nouvelle position ?
Oui. Il faut même effacer l'écran avec SDL_RenderClear(), car SDL_RenderPresent() invalide le contenu du backbuffer sur lequel la SDL2 dessine.
https://wiki.libsdl.org/SDL_RenderPresent
Pour résoudre le problème, il faut donc :
- effacer le contenu du buffer avec la couleur de fond choisie (le noir) dans la boucle d'animation (en début de boucle)
SDL_SetRenderDrawColor(rendu, 0, 0, 0, 255); SDL_RenderClear(rendu);
- remettre la couleur de dessin au blanc choisi par Douglasmcdo avant de dessiner les "planches" (blanches)
SDL_SetRenderDrawColor(rendu, 255, 255, 255, 245) != 0; SDL_RenderFillRects(rendu, planche, 2);
Appeler SDL_RenderPresent() pour rendre (afficher) le contenu du buffer après qu'on ait dessiné ce qu'il fallait dedans, et avant de boucler de nouveau dans la boucle d'animation
SDL_RenderPresent(rendu);
(Douglasmcdo le faisait déjà)
Cela serait une bonne idée de temporiser la boucle pour éviter au programme de consommer trop de temps processeur, en faisant une gestion du temps avec SDL_GetTicks() et SDL_Delay(), mais déjà, avec les changements mentionnés ci-dessus, le programme SDL2 de Douglasmcdo devrait se comporter comme il l'attend.
Donc, le truc à comprendre c'est que l'écran est redessiné entièrement à chaque tour de la boucle d'animation.
C'est comme cela que tu donnes l'illusion que les éléments sur ton écran "bougent".
2 sept. 2022 à 21:08
Merci beaucoup,
Grâce à toi, mon problème est résolu
26 août 2022 à 15:55
Mais normalement c'est pas les coordonnées qui définissent sa position ?
26 août 2022 à 17:30
J'ai finalement découvert le problème : ma planche peut bouger mais laisse un tracé derrière elle