Bonjour à tous, je programme actuellement un petit jeu en c grâce à la SDL2 mais j'ai un petit soucis au niveau de l'affichage.
En fait, des fois le programme affiche bien ce à quoi je m'attends (2 petits rectangles à chaque bout de la fenêtre), mais quelque fois la fenêtre est juste remplie d'une couleur aléatoire.
Tu ne donne pas ton fichier "paddle.c", mais ce n'est pas grave : j'ai pu le recréer moi-même comme suit.
typedef struct Paddle
{
SDL_Rect rect;
Uint8 red;
Uint8 green;
Uint8 blue;
Uint8 alpha;
} Paddle;
Paddle initPaddle (int x, int y, int w, int h, Uint8 r, Uint8 g, Uint8 b, Uint8 a)
{
return (Paddle){{x, y, w, h}, r, g, b, a};
}
Pour ton bug maintenant, c'est très simple en réalité (même si j'ai mis un petit moment à le trouver) : il vient de la ligne 49 de ton code. tu effectue une boucle for pour sizeof(paddles)... qui ne vaux pas le nombre de cases du tableau (2) mais le nombre de composants de ta structure (8 donc avec mon code, car SDL_Rect en compte 4) 😐️ ! Tu affiche donc successivement les rectangles de paddles[0], paddles[1], paddles[2], paddles[3]... etc, jusqu'à paddles[7]. forcément, il y a alors un problème... 🙃️
Voilà, je te laisse le corriger tout seul maintenant, je pense que tu en es capable. 😉️
Bon jeu de pong ! 😁️
Durza42
- Edité par Durza42 29 août 2021 à 9:41:18
La gentillesse est le langage qu'un sourd peut entendre et qu'un aveugle peut voir.
Il n'y a qu'un seul monde et il est faux, cruel, contradictoire, séduisant et dépourvu de sens. Un monde ainsi constitué est le monde réel. Nous avons besoin de mensonges pour conquérir cette réalité, cette "vérité".
....Pour ton bug maintenant, c'est très simple en réalité (même si j'ai mis un petit moment à le trouver) : il vient de la ligne 49 de ton code. tu effectue une boucle for pour sizeof(paddles)... qui ne vaux pas le nombre de cases du tableau (2) mais le nombre de composants de ta structure....
Non. sizeof(paddles) donne la taille d'un pointeur, soit 4 ou 8 octets.
- Edité par edgarjacobs 29 août 2021 à 13:07:01
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Non. sizeof(paddles) donne la taille d'un pointeur, soit 4 ou 8 octets.
Ouh oui, désolé... 😕️ J'ai vu 8 donc j'ai immédiatement conclu nombre de composants... Le pire c'est que je me disais que c'était bizarre comme utilisation... Encore désolé !
La gentillesse est le langage qu'un sourd peut entendre et qu'un aveugle peut voir.
Il n'y a qu'un seul monde et il est faux, cruel, contradictoire, séduisant et dépourvu de sens. Un monde ainsi constitué est le monde réel. Nous avons besoin de mensonges pour conquérir cette réalité, cette "vérité".
SDL2 : Problème d'affichage
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
La gentillesse est le langage qu'un sourd peut entendre et qu'un aveugle peut voir.
Il n'y a qu'un seul monde et il est faux, cruel, contradictoire, séduisant et dépourvu de sens. Un monde ainsi constitué est le monde réel. Nous avons besoin de mensonges pour conquérir cette réalité, cette "vérité".
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
La gentillesse est le langage qu'un sourd peut entendre et qu'un aveugle peut voir.
Il n'y a qu'un seul monde et il est faux, cruel, contradictoire, séduisant et dépourvu de sens. Un monde ainsi constitué est le monde réel. Nous avons besoin de mensonges pour conquérir cette réalité, cette "vérité".