Propsito: Elabora una aplicacin de videojuego que use funciones del mouse para comprobar si se ha hecho un doble clic o cambiar la forma del puntero, o leer la posicin de la rueda, o limitar el movimiento a ciertas zonas de pantalla. En la presente prctica se realiz un videojuego que al dar clic en la figura, se moviera de lugar, y apareciera en otra parte de la pantalla, todo mediante el manejo del mouse. Se dibuja un recuadro en la pantalla con posicin y medidas al azar, despus de comprueba si se pulsa el ratn, si se pulsa el ratn dentro del recuadro se da un punto al jugador.
Aun que se pulse el ratn en cualquier lado el recuadro se dibuja en cualquier otro lado de la pantalla. Esto termina hasta que se pulsa una tecla. A continuacin se muestra el cdigo empleado: #include <stdlib.h> /* Para "rand" */ #include <allegro.h> #include <stdio.h> /*En el cuerpo del programa declaramos las variables que vamos a utilizar...*/ int main() { #define ANCHOPANTALLA 320 #define ALTOPANTALLA 200 #define MAXLADODIANA 50 int posXraton = 160, posYraton = 100, posXcuadro, posYcuadro, ladocuadro, puntos = 0, dibujarcuadro = 1; /*Inicializamos Allegro...*/ allegro_init(); install_keyboard(); install_timer(); install_mouse(); /* Intentamos entrar a modo grafico */ if (set_gfx_mode(GFX_SAFE, ANCHOPANTALLA, ALTOPANTALLA, 0, 0) != 0) { set_gfx_mode(GFX_TEXT, 0, 0, 0, 0); allegro_message( "Incapaz de entrar a modo grafico\n%s\n", allegro_error); return 1; } /* Si todo ha ido bien: empezamos */ srand(time(0)); show_mouse(screen); /* Parte repetitiva: */ Do { rest(50); /*Pausa de 50 ms */ if (dibujarcuadro) { /*Calculo nueva posicion de la diana */ posXcuadro = rand() % (ANCHOPANTALLA - ladocuadro); posYcuadro = rand() % (ALTOPANTALLA - ladocuadro); ladocuadro = (rand() % MAXLADODIANA) + 2; /* Oculto raton y redibujo */ scare_mouse(); clear_bitmap(screen); rectfill(screen, posXcuadro, posYcuadro, posXcuadro+ladocuadro, posYcuadro+ladocuadro, palette_color[5]); textprintf(screen, font, 10,20, palette_color[6], "Puntos: %d", puntos); /*Vuelvo a mostrar raton y marco como dibujado */ unscare_mouse(); dibujarcuadro = 0; } // Si se pulsa el botn, compruebo si es dentro del recuadro. // Si es as, aumento puntos. En cualquier caso,dibujo nueva diana if (mouse_b & 1) { if ((mouse_x >= posXcuadro) && (mouse_x <= posXcuadro+ladocuadro) && (mouse_y >= posYcuadro) && (mouse_y <= posYcuadro+ladocuadro)) { puntos ++; } dibujarcuadro = 1; } } while ( !keypressed() ); /* Repetimos hasta pulsar cualquier tecla */ /*Haciendo que salgamos inmediatamente del juego*/ return 0; } /* Se termina el programa */
CONCLUSIN: En esta prctica entendimos que cada funcin empleada es indispensable y que tambin es importante manejar con el puntero y el teclado con cdigos por cualquier desperfecto en el equipo.