User Tag List

Resultados 1 al 2 de 2

Tema: Programación de un juego en C++ (4/11)

  1. #1

    Fecha de ingreso
    Jun 2004
    Ubicación
    Pinto (MADRID)
    Mensajes
    1,076
    Mencionado
    12 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5
    Agradecer Thanks Received 
    148
    Thanked in
    Agradecido 101 veces en [ARG:2 UNDEFINED] posts

    Programación de un juego en C++ (4/11)

    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ú.

    Código:
    void reset()
    {
    }
    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.

  2. #2

    Fecha de ingreso
    May 2008
    Ubicación
    A tu lado, en tus sueños
    Mensajes
    22,309
    Mencionado
    145 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    319
    Agradecer Thanks Received 
    552
    Thanked in
    Agradecido 424 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    3
    Un pujon de orejas a los moderadores, que llevamos dias a la espera que todos los tutoriales esten disponibles para descarga...

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •