switch(event.type) { case SDL_QUIT:
continuer = 0; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE:
continuer = 0; break; case SDLK_DOWN:
positionZozor.y++; break; case SDLK_UP:
positionZozor.y--; break; case SDLK_RIGHT:
positionZozor.x++; break; case SDLK_LEFT:
positionZozor.x--; break; } break; }
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
SDL_BlitSurface(zozor, NULL, ecran, &positionZozor); /* On place zozor à sa nouvelle position */
SDL_Flip(ecran); /* On met à jour l'affichage */ }
}
Pouvez-vous m'aider à résoudre ce problème s'il vout plaît et à l'optimiser...
Merci d'avance
PS: Je pense qu'il y a de grosses erreurs mais pas taper s'il vout plait
Ouai ça compile , vive Dev-C++
J'ai corrigé l'erreur de SDL_LoadBMPet de la fonction pause mais maintenant ça s'ouvre et se ferme à la vitesse de l'eclair...
switch(event.type) { case SDL_QUIT:
continuer = 0; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE:
continuer = 0; break; case SDLK_DOWN:
positionZozor.y++; break; case SDLK_UP:
positionZozor.y--; break; case SDLK_RIGHT:
positionZozor.x++; break; case SDLK_LEFT:
positionZozor.x--; break; } break; }
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
SDL_BlitSurface(zozor, NULL, ecran, &positionZozor); /* On place zozor à sa nouvelle position */
SDL_Flip(ecran); /* On met à jour l'affichage */ }
/* On centre Zozor à l'écran */
positionZozor.x = ecran->w / 2 - zozor->w / 2;
positionZozor.y = ecran->h / 2 - zozor->h / 2;
while(continuer) {
SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT:
continuer = 0; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_UP: // Flèche haut
positionZozor.y--; break; case SDLK_DOWN: // Flèche bas
positionZozor.y++; break; case SDLK_RIGHT: // Flèche droite
positionZozor.x++; break; case SDLK_LEFT: // Flèche gauche
positionZozor.x--; break; } break; }
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
SDL_BlitSurface(zozor, NULL, ecran, &positionZozor); /* On place zozor à sa nouvelle position */
SDL_Flip(ecran); /* On met à jour l'affichage */ }
SDL_FreeSurface(zozor);
SDL_Quit();
return EXIT_SUCCESS; }
Et moi je voudrais reproduire le même code mais avec une fontion à pars qui gère les évenement :
Je vois une grosse erreur : tu peux pas transmettre une structure comme ça à la fonction (je pense à positionZozor).
Envoie plutôt l'adresse de positionZozor. Modifie ton prototype en conséquence. Change l'intérieur de la fonction pour positionZozor->x et non positionZozor.x vu que maintenant c'est un pointeur.
Tes remarques me seront utiles pour la suite (j'irais faire un petit tour du côté du chapitre sur les pointeurs et revoir mon indentation) mais sinon pour mon code tu ne m'aides pas beaucoup...
Edit :
Citation : remram44
L'imbrication des switch, c'est violent... m'enfin tu fais comme tu veux ;-)
J'ai pas trés bien compris, comment peut on faire autrement, peux tu me donner un exemple s'il te plaît ?
Pour l'indentation tu peux faire comme ca, mais je ne sais pas si c'est la meilleur mais c'est comme ca que je fais et je m'en sort
switch(bidul) { case1: //code break;
case2: break;
//... }
Fonction pour faire bouger Zozor qui ne marche pas
× 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.
If you'd like to join us, read "How do we work at OpenClassrooms"! :)