Está en la página 1de 5

Colegio de Educacin Profesional Tcnica del Estado de Veracruz

Lic. Jess Reyes Heroles



Mdulo: Programacin de Videojuegos
Docente: Miguel ngel Ramos Grande
Prctica 5
Elaborar juego enviando esperar al teclado, motos de luz..
Propsito: Elaborar 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.
Alumna: Yaritsa Guadalupe Castn Gmez
Matrcula: 111650087-5 Grupo: 604-Info.


OBSERVACIONES







Fecha:
19 de Mayo de 2014

Blog:
http://yaripovi604.blogspot.mx/


Introduccin:
Para poder comenzar con esta prctica, se utiliz el link que viene
en cada una de nuestras prcticas para revisar el su cdigo. A pesar
de que se ejecutaba con normalidad mi compaera y yo decidimos
cambiar algunas, como lo fueron las teclas que utilizaba cada
jugador pues en el cdigo que se nos dio se utilizaban las teclas del
PAD y nuestras laptops no tienen este teclado y se nos dificultaba
probar la funcionalidad del juego. Cambiamos tambin los colores
de las motos, la ubicacin inicial y adems agrandamos la pantalla
del juego.

El cdigo de nuestra practica qued de la siguiente manera(Ya con las modificaciones antes
explicadas)

#include <allegro.h>


/* Posiciones X e Y iniciales de ambos jugadores */
#define POS_X_INI_1 300
#define POS_X_INI_2 305
#define POS_Y_INI_1 200
#define POS_Y_INI_2 200

#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_I
#define TEC_ABAJO_2 KEY_M
#define TEC_IZQDA_2 KEY_J
#define TEC_DCHA_2 KEY_L

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;
Librera bsica que
utilizaremos.
Aqu se definen las posiciones
iniciales tanto de la moto1 como
de la moto2
Nos da la pausa entre
movimiento y movimiento
Se establecen las teclas que
utilizar cada jugador para guiar
su moto
Variable para una colisin

/* 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,600,400,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,599,399, 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!", 300,90, palette_color[14]);
chocado =TRUE;
}

if (getpixel(screen, futX2, futY2)!=0){
textout(screen, font,
"La moto 2 ha chocado!", 300,110, palette_color[10]);
chocado = TRUE;
}

if (chocado)break;
Variable que guarda las teclas presionadas
En esta parte se inicializa ALLEGRO, se
instalan los dispositivos de entrada y se
establecen las medidas de la pantalla
Este rectngulo define el
espacio en el que las motos
circularn
Se le dan los valores a las
variables de X, Y a cada
moto
Se empieza a crear el ciclo repetitivo
con DO-WHILE, se inicia cuando
chocado se un valor FALSO
Aqu se hacen las pruebas
para determinar si, alguna de
las motos colisionar entre
ellas.


/* Si ninguna ha colisionado, avanzan */
line (screen, posX1, posY1, futX1, futY1, palette_color[14]);
posX1 = futX1; posY1 = futY1;

line (screen, posX2, posY2, futX2, futY2, palette_color[10]);
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();



CONCLUSION
Es complicado entender el cdigo pero basta con solo prestar atencin e investigar para que sirve
alguna instruccin que no entiendas, ademas de que debed darle tu toque personal aunque el cdigo
ya est hecha. Nos percatamos de que para que las motos se movieran aqu se utiliza un switch con
su CASE y sus BREAKS (respectivamente), muy parecidos a los IF que en clases anteriores habiamos
utilizados.

Mientras ninguna
colisione ambas seguirn
avanzando y dejando su
huella en la pantalla
Se verifica si el usuario ah
tecleado una letra , la moto
correspondiente a esta se
mover en la direccin
indicada
Se detiene le programa para
que el usuario pueda
observar lo que pasa

También podría gustarte