#include "jeu.h" bool jeu(std::string nomFichierNiveau) { /// [1] Lancement du jeu // [1.1] Création de l'écran SDL_Surface *screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE|SDL_DOUBLEBUF); if ( !screen ) { std::cout << "Unable to set 640x480 video: "<< SDL_GetError() << std::endl; return 1; } SDL_WM_SetCaption("Gravitation Game _ Play",NULL); // [1.2] Préparation des composants bool goMenu(false); Uint32 tempsPrecedent(0); Level *niveau(0); niveau = haveLevel(nomFichierNiveau); if (niveau==0) { //Erreur détectée, retour au menu std::cout << "Jeu.cpp: erreur détectée: niveau inexistant ou illisible" << std::endl; return true;//retour au menu } Balle* ball(haveBall(niveau)); /// [2] Boucle principale évenementielle bool done = false; while (!done) { // [2.1] Gestion évènement SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: done = true; goMenu = false; break; case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_ESCAPE: done = true; goMenu = true; break; case SDLK_UP: ball->demarrage(HAUT); break; case SDLK_RIGHT: ball->demarrage(DROITE); break; case SDLK_DOWN: ball->demarrage(BAS); break; case SDLK_LEFT: ball->demarrage(GAUCHE); break; case SDLK_s: ball->statutConsole(); break; }///switch keysym break;///keydown case SDL_KEYUP: switch (event.key.keysym.sym) { case SDLK_ESCAPE: done = true; break; case SDLK_UP: ball->arret(HAUT); break; case SDLK_RIGHT: ball->arret(DROITE); break; case SDLK_DOWN: ball->arret(BAS); break; case SDLK_LEFT: ball->arret(GAUCHE); break; case SDLK_BACKSPACE: ball->respawn(); break; }///switch keysym break;///keyup } ///switch } ///while // [2.2] Calcul ball->calculMouvement(); // [2.3] Dessin SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 120, 130, 228)); ball->dessiner(screen); niveau->afficher(screen); SDL_Flip(screen); // [2.4] Gestion du temps while (30>SDL_GetTicks()-tempsPrecedent)//30ms normalement (3000 debug) { //ça bloque pendant 30 ms moins le temps de calcul } tempsPrecedent=SDL_GetTicks(); } ///Boucle principale évenementielle /// [3] Nettoyage delete niveau; delete ball; SDL_FreeSurface(screen); /// [4] Fin de la partie std::cout << "Jeu.cpp: Partie terminée, pas d'erreur détectée." << std::endl; return goMenu; }///jeu()