int main(int argc, char** argv) { if (argc && argv); //pour éviter un warning..... std::srand(std::time(NULL)); SDL_Rect src; SDL_Rect dst; src.w=640; src.h=480; src.y=0;src.x=0;dst.x=0; dst.y=0; SDL_Surface* gpScreen = NULL; int mode = 2; //mode=0; gpScreen = init(); SDL_Surface* gpScreen2 = SDL_CreateRGBSurface(SDL_HWSURFACE, 320, 240, 32, 0, 0, 0, 0); SDL_Surface* gpScreen3 = NULL; Audio* gpAudio = new Audio(); Jeu* gpJeu = new Jeu(gpAudio); Carte* gpCarte = new Carte(gpJeu); Encyclopedie* gpEncyclopedie = new Encyclopedie(gpJeu); Keyboard* gpKeyboard = new Keyboard(gpJeu, gpCarte, gpEncyclopedie, gpScreen, mode); gpJeu->setKeyboard(gpKeyboard); Generique* gpGenerique = new Generique(gpJeu); gpJeu->setGenerique(gpGenerique); gpGenerique->initLogo(); //gpJeu->init(0); bool gLoop = true; Uint32 lastAnimTime = SDL_GetTicks(); while (gLoop) { if (gpKeyboard->gererClavier() == -1) {gLoop = false;} switch (gpKeyboard->getMode()) { case 0 : //jeu normal gpJeu->draw(gpScreen2); break; case 1 : //disclamer case 2 : //logo case 3 : //titre case 14 : //générique score case 17 : //menu d'aide 1 case 18 : //menu d'aide 2 gpGenerique->draw(gpScreen2); break; case 4 : //selection gpGenerique->drawSelection(gpScreen2, gpKeyboard->getLigne(), gpKeyboard->getColonne()); break; case 6 : //options gpGenerique->drawOption(gpScreen2, gpKeyboard->getLigneOption(), gpKeyboard->getVolume()/8, gpKeyboard->getVolson()/8); break; case 7 : //charger partie gpGenerique->drawCharger(gpScreen2, gpKeyboard->getLigne(), gpKeyboard->getLigneVal()); break; case 8 : //générique intro gpGenerique->drawIntro(gpScreen2, gpKeyboard->getIntro()); break; case 9 : //effacer partie gpGenerique->drawEffacerSave(gpScreen2, gpKeyboard->getLigne(), gpKeyboard->getLigneVal()); break; case 10 : //générique début chez link gpGenerique->drawDebut(gpScreen2); break; case 11 : //générique fin gpGenerique->drawFin(gpScreen2); break; case 12 : //carte case 22 : //carte téléportation gpCarte->draw(gpScreen2); break; case 13 : //encyclopédie des monstres gpEncyclopedie->draw(gpScreen2); break; case 15 : //records case 19 : //rang 100% case 20 : //rang ultime case 21 : //rang de rapidité gpGenerique->drawRecord(gpScreen2, gpKeyboard->getLigneRecord(), gpKeyboard->getColonneRecord()); break; case 16 : //effacer record gpGenerique->drawEffacer(gpScreen2, gpKeyboard->getLigneVal()); break; default : break; } SDL_FreeSurface(gpScreen3); gpScreen3 = zoomSurface (gpScreen2, 2, 2, 0); SDL_BlitSurface(gpScreen3, &src, gpScreen, &dst); SDL_Flip(gpScreen); if (SDL_GetTicks() < lastAnimTime + 20) SDL_Delay(lastAnimTime+20-SDL_GetTicks()); lastAnimTime = SDL_GetTicks(); } SDL_FreeSurface(gpScreen2); SDL_FreeSurface(gpScreen3); delete gpEncyclopedie; delete gpGenerique; delete gpKeyboard; delete gpCarte; delete gpJeu; delete gpAudio; SDL_ShowCursor(SDL_ENABLE); SDL_Quit(); exit(0); return 0; }