class Game{ public: void InitResources(); void TitleMenu(); void GameLoop(); void HandleInput(); void EndGame(); void CleanUp(); void GameState(int option); void StartGame(); SDL_Surface *message; SDL_Surface *background; SDL_Surface *testText; SDL_Rect clip[1]; void GameUpdate(); TTF_Font *font; bool GameRunning; bool GameTitle; }; //////////////////////////////////////////// class Input: public Game{ public: void HandleInput(); SDL_Event event; friend class Game; }; //////////////////////base clases void Game::InitResources(){ message = load_Image("spritetest.png"); font = loadfont("basic.ttf",12); testText = Displaytext(font,"test",255,255,255); clip[0].x = 0; clip[0].y = 0; clip[0].w = 30; clip[0].h = 45; } void Game::StartGame(){ GameState(GAMETITLE); } void Game::GameState(int option){ switch (option){ case 1 : TitleMenu(); break; case 2 : GameLoop(); break; case 3 : EndGame(); break; } } void Game::TitleMenu(){ while(GameTitle == true){ apply_surface(0,0,testText,screen); apply_surface(20,20,message,screen, &clip[0]); GameUpdate(); } GameState(GAMESTART); } void Game::GameLoop(){ while(GameRunning == true){ GameUpdate(); } GameState(GAMEEND); } void Game::EndGame(){ CleanUp(); } void Game::GameUpdate(){ SDL_Flip(screen); IncFrameV(); FrameSync(); HandleInput(); fps.Start(); } void Game::CleanUp(){ SDL_FreeSurface(message); SDL_FreeSurface(background); SDL_Quit(); } ////////////////// void Input::HandleInput(){ if(SDL_PollEvent(&event)){ if(event.type == SDL_KEYDOWN){ switch (event.key.keysym.sym){ case SDLK_ESCAPE: Game::GameState(GAMEEND);break; } } } }