main.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include <iostream>
  2. #include <SDL/SDL.h>
  3. int main ( int argc, char** argv )
  4. {
  5. /// [1] Démarrage
  6. // [1.1] Démarrages SDL
  7. if ( SDL_Init( SDL_INIT_VIDEO ) < 0)
  8. {
  9. std::cout << "Impossible d'initialiser la SDL: " << SDL_GetError() << std::endl;
  10. return 1;
  11. }
  12. // [1.2] Préparation de fermeture
  13. atexit(SDL_Quit);
  14. // [1.3] Para-fenêtre
  15. SDL_WM_SetCaption("Color", 0);
  16. /// [2] Préparation des composants
  17. // [2.1] Préparation de la fenêtre
  18. SDL_Surface* screen = SDL_SetVideoMode(160, 90, 32,
  19. SDL_HWSURFACE|SDL_DOUBLEBUF);
  20. if ( !screen )
  21. {
  22. std::cout << "Unable to set 640x480 video: " << SDL_GetError() << std::endl;
  23. return 1;
  24. }
  25. // [2.2] Préparation
  26. Uint32 couleur(0);
  27. Uint16 red;
  28. Uint16 green;
  29. Uint16 blue;
  30. /// [3] Boucle principale
  31. bool done = false;
  32. while (!done)
  33. {
  34. // [3.1] Gestion évènements
  35. SDL_Event event;
  36. while (SDL_PollEvent(&event))
  37. {
  38. switch (event.type)
  39. {
  40. case SDL_QUIT:
  41. done = true;
  42. break;
  43. case SDL_KEYDOWN:
  44. if (event.key.keysym.sym == SDLK_ESCAPE)
  45. done = true;
  46. break;
  47. } // end switch event type
  48. } // end of message processing
  49. // [3.2] Demande de couleur
  50. std::cout << "Entrez la quantité, de 0 à 255 (300 pour quitter), de" << std::endl;
  51. std::cout << "red ";
  52. std::cin >> red;
  53. if (red>255)
  54. break;
  55. std::cout << "green ";
  56. std::cin >> green;
  57. std::cout << "blue ";
  58. std::cin >> blue;
  59. // [3.3] Dessin des composants
  60. couleur = SDL_MapRGB(screen->format,red,green,blue);
  61. std::cout << "32 bits code: " << couleur << std::endl;
  62. SDL_FillRect(screen, 0, couleur);
  63. SDL_Flip(screen);
  64. } //fin bcl principale
  65. ///[4] Destruction des composants
  66. SDL_FreeSurface(screen);
  67. std::cout << "Aucune erreur détectée." << std::endl;
  68. return 0;
  69. }