Colegio De Educacin Profesional Tcnico Del Estado De Veracruz
#165 Lic. Jess Reyes Heroles. Modulo Povi-02 P.S.P Miguel ngel Ramos Grande Alumnos Brenda Cruz Mata Francisco Javier Flores Romn Jorge Alberto Hernndez Rojas Practica 5
Propsito De La Prctica: Elaborar un juego donde se evite esperar al teclado, es decir que la computadora quede "parada " esperando a que se pulse una tecla, sino que la accin prosiga aunque no se toque el teclado. Desarrollo Para la elaboracin de esta prctica lo primero que realice es: Abrir Dev-Cpp Damos clic en ARCHIVO Seleccionamos el men NUEVO Enseguida damos clic en PROYECTO
Inicio #include <allegro.h> /* Posiciones X e Y iniciales de ambos jugadores */ #define POS_X_INI_1 150 #define POS_X_INI_2 170 #define POS_Y_INI_1 100 #define POS_Y_INI_2 100 #define INC_X_INI_1 -1 #define INC_X_INI_2 1 #define INC_Y_INI_1 0 #define INC_Y_INI_2 0 /* Pausa en milisegundos entre un "fotograma" y otro */ #define PAUSA 150 /* Teclas predefinidas para cada jugador */ #define TEC_ARRIBA_1 KEY_E #define TEC_ABAJO_1 KEY_X #define TEC_IZQDA_1 KEY_S #define TEC_DCHA_1 KEY_D #define TEC_ARRIBA_2 KEY_8_PAD #define TEC_ABAJO_2 KEY_2_PAD #define TEC_IZQDA_2 KEY_4_PAD #define TEC_DCHA_2 KEY_6_PAD int posX1, posY1, posX2, posY2; /* Posiciones actuales */ int incX1, incY1, incX2, incY2; /* Incremento de la posicion */ int futX1, futY1, futX2, futY2; /* Posiciones futuras */ /* Si ha chocado alguna moto */ int chocado; /* La tecla pulsada */ int tecla; int main() { allegro_init(); /* Inicializamos Allegro */ install_keyboard(); install_timer();/* Intentamos entrar a modo grafico */ if (set_gfx_mode(GFX_SAFE,320,200,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 */ /* Rectangulo amarillo alrededor */ rect(screen,0,0,319,199, palette_color[14]); /* Valores iniciales */ posX1 = POS_X_INI_1; posX2 = POS_X_INI_2; posY1 = POS_Y_INI_1; posY2 = POS_Y_INI_2; incX1 = INC_X_INI_1; incX2 = INC_X_INI_2; incY1 = INC_Y_INI_1; incY2 = INC_Y_INI_2; /* Parte repetitiva: */ do { chocado = FALSE; /* Compruebo si alguna va a colisionar */ futX1 = posX1 + incX1; futX2 = posX2 + incX2; futY1 = posY1 + incY1; futY2 = posY2 + incY2; if (getpixel(screen, futX1, futY1)!=0){ textout(screen, font, "La moto 1 ha chocado!", 100,90, palette_color[13]); chocado =TRUE; } if (getpixel(screen, futX2, futY2)!=0){ textout(screen, font, "La moto 2 ha chocado!", 100,110, palette_color[12]); chocado = TRUE; } if (chocado)break; /* Si ninguna ha colisionado, avanzan */ line (screen, posX1, posY1, futX1, futY1, palette_color[13]); posX1 = futX1; posY1 = futY1; line (screen, posX2, posY2, futX2, futY2, palette_color[12]); posX2 = futX2; posY2 = futY2; /* Compruebo si se ha pulsado alguna tecla */ if ( keypressed() ){ tecla = readkey() >>8; switch(tecla){ case TEC_ARRIBA_1: incX1 = 0; incY1 = -1;break; case TEC_ABAJO_1: incX1 = 0; incY1 = 1;break; case TEC_IZQDA_1: incX1 = -1; incY1 = 0;break; case TEC_DCHA_1: incX1 = 1; incY1 = 0;break; case TEC_ARRIBA_2: incX2 = 0; incY2 = -1;break; case TEC_ABAJO_2: incX2 = 0; incY2 = 1;break; case TEC_IZQDA_2: incX2 = -1; incY2 = 0;break; case TEC_DCHA_2: incX2 = 1; incY2 = 0;break; } } /* Pequea pausa antes de seguir */ rest ( PAUSA ); } while (TRUE);/* Repetimos indefininamente */ /* (la condicion de salida la comprobamos "dentro") */ readkey(); return 0; } /* Termino con la "macro" que me pide Allegro */ END_OF_MAIN(); Conclusin En esta prctica no le entend mucho por qu est demasiado enredado.