Alumno: Manuel Alexis Hurtado Morales Mdulo: Programacin de Videojuegos. Semestre: 6 Grupo: 604 Informtica Matrcula: 111650246-7 Practica 5: Elaborar juego evitando esperar al teclado, motos de luz. Propsito: Elabora una aplicacin de videojuego que evite esperar al teclado, para evitar que la computadora quede "parada " esperando a que se pulse una tecla y la accin prosiga aunque no se toque el teclado. Direccin del blog: http://programaciondevideojuegosalexis.blogspot.mx/ Introduccin: En esta prctica veremos cmo se realiza un recorrido de dos motocicletas las cuales si alguna de las dos llega a colisionar nos muestra un mensaje el juego de cual ha colisionado y nos saca del juego. 1.- 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
2. - Se abrira la siguiente ventana y seleccionamos el men siguiente:
Se declara nuestra librera para realizar nuestro video juego. #include <allegro.h> Se definen las posiciones de X e Y iniciales de nuestro videojuego. #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 Pausamos nuestro video juego en milisegundos. #define PAUSA 150 En este cdigo definimos las teclas a utilizar en una moto el videojuego. (Moto 1) #define TEC_ARRIBA_1 KEY_E #define TEC_ABAJO_1 KEY_X #define TEC_IZQDA_1 KEY_S #define TEC_DCHA_1 KEY_D Se definen las teclas a utilizar en la moto nmero 2. (Utilizaremos las flechas cursoras) #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 posicin. int futX1, futY1, futX2, futY2; //Futuras posiciones. //Si la moto choca. int chocado; //La tecla que pulsamos. int tecla; //Iniciamos nuestro programa. int main() { Comentado [A1]: Con E nos desplazamos hacia arriba Comentado [A2]: Con X hacia abajo Comentado [A3]: Con S a la izquierda Comentado [A4]: Y con D a la derecha Comentado [A5]: Nos movemos hacia arriba con la tecla cursora Comentado [A6]: Nos movemos hacia abajo Comentado [A7]: Hacia la izquierda con la tecla cursora que indica izquierda Comentado [A8]: Y nos movemos hacia la derecha //Se inicializa allegro allegro_init(); install_keyboard(); install_timer(); //Entramos 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; } //Dibujamos un rectngulo alrededor. rect(screen,0,0,319,199, palette_color[9]); //Declaramos 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; do { chocado = FALSE; // Se comprueba si alguna moto choca. futX1 = posX1 + incX1; futX2 = posX2 + incX2; futY1 = posY1 + incY1; Comentado [A9]: Instalamos el teclado Comentado [A10]: Instalamos el tiempo futY2 = posY2 + incY2; //Si la moto 1 choca con un getpixel se muestra el mensaje La moto 1 ha chocado if (getpixel(screen, futX1, futY1)!=0){ textout(screen, font,"La moto 1 ha chocado!", 100,90, palette_color[7]); chocado =TRUE; } //se hace el mismo procedimiento que el anterior (Si la moto 2 choca con un getpixel se muestra el mensaje La moto 2 ha chocado) if (getpixel(screen, futX2, futY2)!=0){ textout(screen, font,"La moto 2 ha chocado!", 100,110, palette_color[9]); chocado = TRUE; } if (chocado)break; //Si ninguna motocicleta choca entonces las motocicletas avanzan. line (screen, posX1, posY1, futX1, futY1, palette_color[7]); posX1 = futX1; posY1 = futY1; line (screen, posX2, posY2, futX2, futY2, palette_color[9]); posX2 = futX2; posY2 = futY2; //Se comprueba si se pulsa alguna tecla se mueve alguna motocicleta. 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; Comentado [A11]: Ciclo if Comentado [A12]: Ciclo if de la moto 2 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; } } //Se realiza una pequea pausa Antes se continuar. rest ( PAUSA ); } //y as se repite la funcin hasta que alguna de las motocicletas choque y se salga del juego. while (TRUE); readkey(); return 0; // Se termina nuestro programa. } END_OF_MAIN();
Compilacion de nuestro videoJuego: Se muestra el recorrido de las motocicletas.
Cuando Choca la motocicleta nmero 1.
Cuando choca la motocicleta nmero 2.
Conclusin: Esta prctica tuvo cambios en cuanto a la velocidad de las motocicletas y tambin los colores y unas cosas ms, aprend a como dirigirlas con nmeros ya que es una sentencia diferente. Esta prctica se puede jugar con 2 personas, es una prctica que se podra decir origino a los juegos modernos, que se juegan de dos o ms personas, se usan pixeles para mostrar pequeas cosas como cuando se choca un pequeo pixel con otro.