You are on page 1of 5

Colegio de Educacin Profesional Tcnica del Estado de

Veracruz
Plantel Tuxpan Lic. Jess Reyes Heroles165
Docente: Miguel ngel Ramos Grande
Modulo: Programacin de videojuegos
Practica 5: Evitar esperar al teclado.
Propsito: 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

Alumna: Diana Laura Ramrez Xochihua


604-INFORMATICA













INTRODUCCIN
En esta practica se realizo un juego llamado motos de luz y en la programacin de esta se ocupo la
funcin kbhit(), que devuelve "verdadero" (distinto de cero) si se ha pulsado alguna tecla y "falso"
(cero) si no se ha pulsado ninguna. Tambin se utilizo la funcin getch( ) o keypressed( ), para
saber exactamente qu tecla es la que se ha pulsado. Entre otras mas funciones.

DESARROLLO
Para comenzar a desarrollar esta practica abrimos DEVC++ y en la practica venia el link del
videojuego, y solo se corrigieron algunas cosas.

Cdigo

#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_W
#define TEC_ABAJO_1 KEY_S
#define TEC_IZQDA_1 KEY_A
#define TEC_DCHA_1 KEY_D

#define TEC_ARRIBA_2 KEY_8_PAD
#define TEC_ABAJO_2 KEY_5_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; /* 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;
}
/* Empieza */

/* 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 condicin de salida la comprobamos "dentro") */

readkey();
return 0;

}

END_OF_MAIN();

Pantallas del videojuego en ejecucin.



CONCLUSIN
Al realizar esta prctica, comprend el cdigo, al cual le modifique las teclas para cada
jugador (con las que jugara cada uno), adems de que conoc nuevas funciones como la
de kbhit(), que devuelve "verdadero" o "falso" entre otras.

You might also like