Está en la página 1de 6

Colegio de Educacin Profesional Tcnica del Estado de

Veracruz

CONALEP N165

Lic. Jess Reyes Heroles

Modulo:
Programacin para videojuegos
Docente:
Miguel ngel Ramos Grande
Alumno:
Emmanuel Alfonso Santiago Daz
604-Info
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.





Introduccin:
Esta practica consiste en crear un juego que simule la comptecia de
motocicletas las cuales dejan una raya de color por todo el camno que
han recorrido es decir marcan su trayectoria.
Desarrollo:
Construir un algoritmo para el juego motos de luz.

tener acceso a rutinas de manejo de teclado "install_keyboard()".
con las siguientes condiciones:

cuando se desplaza.
misma, o con el borde de la pantalla, estalla y pierde la partida.
por l.


variables iniciales: direccin de cada jugador (incremento
en X e Y de la posicin de cada uno).
En un juego "ms real", este incremento podra ser variable (o disminuir el
tiempo de pausa entre un movimiento y otro), de modo que las motos
circularan cada vez ms deprisa, para mayor dificultad.
ocupada, la moto estalla y el jugador pierde, termina el juego. o Desplazar
las motos a su siguiente posicin. o Si se pulsa alguna tecla, analizar esta
tecla y cambiar la direccin de la moto segn corresponda. o Pausa fija (o
variable segn la dificultad) antes de la siguiente repeticin, fijada por el
programa, para que la velocidad no dependa de la rapidez de la
computadora que se utilice.
pantalla al que se va a mover. Si ese punto tiene un color distinto del fondo,
hay choque (quiz sea con el borde de la pantalla, quiz con la estela,
quiz con la del otro jugador)



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

readkey();
return 0;

}

/* Termino con la "macro" que me pide Allegro */
END_OF_MAIN();




Asi es como queda ya terminada

Conclucion
Esta es una alternativa para un pequeo juego para los peques o hasta para uno mismo cuando no
tienes nada que hacer.

También podría gustarte