La mejor forma para ver el funcionamiento de la máquina de estados es con un ejemplo, en nuestro caso será el estado “SPLASH” en el cual aparece el logo des estudio Pepes Games.
Para añadir una ventana con el logotipo del estudio crearemos un nuevo objeto del tipo Sprite y un nuevo estado en el que se mostrara la imagen y cargará el menú principal al presionar ESC
enum State { STARTUP, SPLASH, MAIN_MENU, GAME, HIGHSCORE, SELECT_PROFILE, CREATE_PROFILE1, CREATE_PROFILE2, EXIT = -1 };
Y un objeto del tipo Sprite En el constructor de GameController asignamos g_ g_NextGameState el estado de SPLASH
g_NextGameState = SPLASH;
En la función Update capturamos el nuevo estado y definimos que en el caso de pulsar ‘ESC’ por el jugador el estado pasará a MAIN_MENU
else if (g_GameState == SPLASH) { //If ESCAPE KEY PRESSED int inKey = m_keyboard->DetectOneKeyReleased(SDLK_ESCAPE); if (inKey != 0) g_NextGameState = MAIN_MENU; }
En la función Draw realizaremos el dibujo del objeto m_splashscreen y un texto con
el mensaje presione escape cuando el estado sea SPLASH
//Draw splash screen else if (g_GameState == SPLASH) { m_splashscreen->DrawImage(280, 150, 500, 400); m_textfont->DrawTxt("Press 'Esc'", 400, 700, 20, 30, 1); }
Declaración del objeto
Sprite* m_splashscreen;
En la función LoadAssets Cargamos la imagen y construimos el objeto
m_splashscreen = new Sprite("./Images/PepeLogo.png");