Se connecter avec
S'enregistrer | Connectez-vous

Probleme Switch

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte
Expert Programmation

@skorr: si tu ne programmes pas en C/C++/Java, évite de faire ce genre de commentaires :o 
(switch est une instruction dans ces langages ;)  )

@didi: Ben une suite de if .. else évidemment !
(Comment ça, ce n'est pas évidement. C'était une question de cours ?)

Salut,

@skorr: pourquoi dans la mauvaise section ? si c'est bien de l'instruction switch dont il parle c'est bon. ca existe dans pas mal de langages.

@didi world: c'est quoi le langage. sinon c'est des if / else imbriqués mais en général quand il y a trop de cas on utilise un switch hein !

[GRILLED : avec quasiment la même réponse en plus !!! :cry:  ]
Expert Programmation

C'est un scandale !

bebRito, tu as fait un plagiat honteux de MA réponse en prétendant t'être fait griller. Je n'en crois rien. Tout ça c'est pour récupérer les points de meilleure réponse. Je pense sérieusement prendre les mesures qui s'imposent pour punir cette méprisable attitude.

:fou:  [:aha] :ange:  :)  :whistle:  :D  :lol:  [:marsien]

quelle librairie utilises-tu ? SDL ?

Le mieux est d'utiliser un switch pour les évènements, ca me parait plus propre.

Voici un exemple si tu utilises SDL:
  1. SDL_Event event;
  2. // process events
  3. while (SDL_PollEvent(&event)) {
  4. // for each event, look for its type
  5. switch (event.type) {
  6. // manage the event according to its type
  7. case SDL_QUIT:
  8. // quit the application
  9. done = 1;
  10. break;
  11. case SDL_KEYUP:
  12. // if the q letter is released
  13.  
  14. break;
  15. case SDL_MOUSEBUTTONUP:
  16. // manage the mouse click
  17.  
  18. break;
  19. case SDL_MOUSEMOTION:
  20. // manage the mouse motion
  21.  
  22. break;
  23. default:
  24. // use the default use case if the event does not need to be manage
  25. break;
  26. }
  27. }

Pris la tête ? non, j'ai juste copier/coller du code d'un de mes projets ;) 

Si tu veux le faire avec un if/else, bah tu remplace le switch comme ça:
  1. if (event.type == SDL_QUIT){
  2. //traitement du quit
  3. } else {
  4. // autre évènement
  5. }


Mais ce n'est pas top je trouve...

  1. #include <unistd.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <SDL/SDL.h>
  5. #include <SDL_image.h>
  6.  
  7. int main()
  8. {
  9. SDL_Surface *display;
  10. SDL_Surface *image;
  11. SDL_Rect positionImage;
  12. SDL_Event event;
  13. int i;
  14.  
  15. SDL_Init(SDL_INIT_VIDEO);
  16. i = 1;
  17. display = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
  18. SDL_WM_SetCaption("super window", NULL);
  19. image = SDL_LoadBMP(images.bmp);
  20. positionImage.x = display->w / 2 - image->w / 2;
  21. positionImage.y = display->h / 2 - image-> h / 2;
  22. SDL_EnableKeyRepeat(10, 10);
  23. while (i != 0)
  24. {
  25. SDL_WaitEvent(&event);
  26. if (event.type == SDL_QUIT)
  27. {
  28. i = 0
  29. case SDL_KEYDOWN:
  30. if (event.key.keysym.sym != SDL_QUIT)
  31. {
  32. case SDLK_UP:
  33. positionImage.y--;
  34. case SDLK_DOWN:
  35. positionImage.y++;
  36. case SDLK_RIGHT:
  37. position.x++;
  38. case SDLK_LEFT:
  39. position.x--;
  40. }
  41. SDL_FillRect(display, NULL, SDL_MapRGB(display->format, 255, 255, 255));
  42. SDL_BlitSurface(image, NULL, display, &positionImage);
  43. SDL_Flip(display);
  44. }
  45. }
  46. SDL_FreeSurface(image);
  47. SDL_Delay(4000);
  48. SDL_Quit();
  49. return (EXIT_SUCCESS);
  50. }
  51.  
  52. }

bon voila bebRito mn code come promis bon il marche pas super il segfault c'est cause de la partie evenement avec les if et les else qui remplace les switch :cry:  :cry:  :cry:  :cry: 

Ah non mais ca ne risque pas de compiler là !!

C'est quoi ces "case" en plein milieu.
le mot clé "case" ne doit être utilisé que dans des "switch" !

Je te conseille d'aller suivre des tutos en C/C++ sur developpez.com car là, tu manques cruellement de base en programmation C !

et puis indente ton code, c'est absolument illisible ! :o 

tout le monde a le droit de débuter mais je ne vais pas te faire un cours magistrale en C.

Ah oui, là c'est sûr qu'avec Emacs, seul le compilateur te donnera les erreurs ...

Bon courage !

Tu peux toutefois installer l'un des environnements que j'ai cité sous Freebsd je pense (sauf DevC++ je pense).
C'est pour te faciliter la vie ... à toi de voir.
Expert Programmation

bebRito, arrête de dire des bêtises aussi grosses qu'un G mauve (Un G mauve est, comme chacun sait, un peu plus gros qu'une vache !) Après vi ( :whistle:  ), emacs est le meilleur outils pour programmer. Un peu d'histoire pour les ptits jeunes.

didi, qu'est-ce que c'est que cette horreur ! Pas une seul indentation :pfff: 
Lis-moi ça et recommence. A la lecture du paragraphe, tu découvriras peut-être la commande indent. L'opération qui consiste à transformer un code moche-à-la-didi en un code beau-comme-l'aime-zeb s'appelle code beautify. C'est tellement un classique, que je te laisse à l'étude des commandes cb et bcpp : http://www.google.fr/search?C+beautifier.

C'est pas beau tout ça ?

:D 

_________________________________________________________
C'est Vendredi, zeb le grincheux est de bonne humeur ^^

:lol: 

eho zeb, on est en 2010, emacs c'est génial mais y'a quand même plein d'autres outils hein !!

surtout que débuter avec emacs alors qu'il y a d'autres outils pour faciliter les choses ... hein.

Mais je rejoins ton avis mon cher, emacs roxxxe (langage de jeune, ca va ?) pour coder en C.
Lassé par la pub ? Créez un compte