4. MENU
Tenéis el proyecto en: Tutorial de programación c++ (4/11)
Esta lección será bastante corta. Nos limitaremos a poner un sencillo menú con 2 opciones: jugar y salir. Si seleccionamos jugar pondremos el modo de programa a JUEGO y si seleccionamos salir pondremos la variable done=1.
Código:
///////////////////////////////////
/* Variables de la pantalla de */
/* menu */
///////////////////////////////////
int menu_selection=0;
Lo primero que encontramos es una nueva variable global que indica lo que hay seleccionado en el menú.
Hemos añadido una nueva función que dejaremos en blanco de momento. Cada vez que seleccionemos jugar llamaremos a reset() que inicializará algunas variables, como la puntuación, el nivel, etc...
Código:
void read_menu_keys()
{
SDL_Event event;
// Comprueba los eventos de botones
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_JOYBUTTONDOWN:
switch (event.jbutton.button)
{
case GP2X_BUTTON_UP:
if (menu_selection>0)
menu_selection--;
break;
case GP2X_BUTTON_DOWN:
if (menu_selection<1)
menu_selection++;
break;
La función read_menu_keys() es la que más cambios sufre. ¿Recordáis que la variable menu_selection guardaba la opción de menú que teníamos seleccionada? Pues aquí la cambiaremos. Si pulsamos arriba, decrementamos el valor de la variable hasta que llega a 0. Y si pulsamos abajo, incrementamos su valor hasta que llega a 1. Como sólo tenemos dos opciones en el menú, los posibles valores de menu_selection son 0 (jugar) o 1 (salir).
Código:
case GP2X_BUTTON_A:
case GP2X_BUTTON_B:
case GP2X_BUTTON_X:
case GP2X_BUTTON_Y:
switch (menu_selection)
{
case 0:
reset();
program_mode=PROGRAM_MODE_GAME;
break;
case 1:
done=1;
break;
}
break;
}
break;
}
}
}
Si pulsamos alguno de los botones, lo que haremos será comprobar el valor de menu_selection. Si su valor es 0 (jugar) llamaremos a reset() y pasaremos al modo JUEGO con program_mode=PROGRAM_MODE_GAME;. En cambio, si su valor es 1 (salir), pondremos done=1.
Código:
void draw_menu()
{
draw_text(screen,"Jugar",50,100,255,255,255);
draw_text(screen,"Salir",50,120,255,255,255);
switch (menu_selection)
{
case 0:
draw_text(screen,"Jugar",49,99,255,0,0);
break;
case 1:
draw_text(screen,"Salir",49,119,255,0,0);
break;
}
}
Ahora dibujaremos el menú definitivo. Lo que haremos será escribir en color blanco las dos posibles opciones: Jugar y Salir. Y después comprobaremos la variable menu_selection y escribiremos en color rojo la que esté seleccionada: Jugar si vale 0, o Salir si vale 1. De esta forma, podremos ver claramente cuál es la opción seleccionada en cada momento.
Con esto ya tenemos programado uno de los modos del juego, el de MENU. ¿Que es muy simple? ¡Sí! Pero para eso estáis vosotros, para añadirle lo que se os ocurra, hacer pruebas de todo tipo y experimentar. Las posibilidades son enormes... y sobre todo, cambiadlo sin miedo.
Marcadores