Hello !
Je fais un snake, et j'ai 2 questions.
La première, comment faire, pour qu'à l'intérieur d'un case (lui même à l'intéreur de switch(event.key.keysym.sym)) on puisse gérer les évêments ? Avec 2 events ? (Vous allez comprendre avec le code de quoi je veux parler)
[edit] Je viens de faire avec 2 events, ca va vachement mieux; mais il reste un p'tit probleme. Quand on appuie sur "m", ca quitte le jeu, hors, je veux que ca reviennen au menu ! J'ai édité le code également ! [edit]
Secondo, mon snake bug légèrement au début, il a un trou au milieu. Vous allez comprendre en éxecutant tout ça. V'la les sources (dont je me suis permis de supprimer certains choses) :
CONSTANTES.H :
int jeu (SDL_Surface* ecran); void perdu (SDL_Surface* ecran);
switch(event.type) { case SDL_QUIT:
continuer = 0; break; case SDL_KEYDOWN : switch(event.key.keysym.sym) { case SDLK_DOWN : if(direction != HAUT )
direction = BAS; break;
case SDLK_UP : if(direction != BAS )
direction = HAUT; break;
case SDLK_RIGHT : if(direction != GAUCHE )
direction = DROITE; break;
case SDLK_LEFT : if(direction != DROITE )
direction = GAUCHE; break; } }
actuel = SDL_GetTicks();
if(actuel - precedant > 600)/* le serpent avant tout seul */ {
precedant = actuel; if(direction == BAS) { /* SUPPRIMER sinon trop grand */ }
elseif(direction == DROITE) { /* Je vous laisse celui-ci, juste assez pour l'éxecution puisque la direction de départ est droite ! Vous aurez le temps de voir le bug */
for(int i = 0; i < tailleTableau; i++)// Le bloc du serpent prend la place du suivant {
Pserpent[i].x = Pserpent[i + 1].x;
Pserpent[i].y = Pserpent[i + 1].y; if(Ptete.y == Pserpent[i].y && Ptete.x == Pserpent[i].x)
GAGNER = 0; } }
× 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.