Vous êtes sur la page 1sur 11

COLEGIO DE EDUCACION PROFESIONAL TCNICA DEL ESTADO DE

VERACRUZ
LIC. JESUS REYES HEROLES

Nombre del alumno(A):
YULIANA CECILIA DAMIAN REYES
DULCE SUGEY HERNANDEZ CRUZ
Modulo:
PROGRAMACION DE VIDEOJUEGOS
Profesor:
ING. MIGUEL ANGEL RAMOS GRANDE
Grupo:
604
Carrera:
INFORMTICA
Reporte de Practica #5
Elaborar juego evitando esperar al teclado, motos de luz.
PROPOSITO DE LA PRCTICA:
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.





PRACTICA 5
Elaborar juego evitando esperar al teclado, motos de luz.

INTRODUCCION
El da 23 de mayo de 2014 se realiz la prctica nmero 5 del mdulo de
programacin de videojuegos la cual consista en elaborar un juego llamado motos
de luz, los cuales evitaban esperar el teclado y se movan aunque el jugador no
pulsara ninguna tecla. Esta prctica la realice junto con mi compaera Dulce
Sugey Hernndez Cruz.
DESARROLLO
Construir un algoritmo para el juego motos de luz.

Selecciona un lenguaje de programacin


Entra al modo grfico.
Para esto nos vamos a archivo Nuevo Proyecto

Utiliza el lenguaje seleccionado y bibliotecas necesarias.
Incluye como primera clausula funcin para tener acceso a rutinas de
manejo de teclado "install_keyboard()".











E
lab
ora
la
ruti
na
sec
uen
cial
de
un
juego con las siguientes condiciones:
Participan dos jugadores.
Cada uno de los jugadores maneja una "moto", que va dejando un rastro
cuando se desplaza.
Si una de las motos "choca" con el rastro dejado por la otra, o por ella
misma, o con el borde de la pantalla, estalla y pierde la partida.
Por tanto, el objetivo es "arrinconar" al contrario sin ser arrinconado antes
por l.








Debes basarte en el siguiente pseudocdigo:
Borra la pantalla y dibujar un recuadro alrededor de ella.
Prepara las variables iniciales: direccin de cada jugador (incremento en
X e Y de la posicin de cada uno).
En el instante inicial, las motos se desplazarn en direcciones contrarias.
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.
Parte repetitiva:
Si la siguiente posicin de alguna de las motos est ocupada, la moto
estalla y el jugador pierde, termina el juego.
Desplazar las motos a su siguiente posicin.
Si se pulsa alguna tecla, analizar esta tecla y cambiar la direccin de la
moto segn corresponda.
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.



Parte repetitiva:
Si la siguiente posicin de alguna de las motos est ocupada, la moto
estalla y el jugador pierde, termina el juego.
Desplazar las motos a su siguiente posicin.Si se pulsa alguna tecla,
analizar esta tecla y cambiar la direccin de la moto segn corresponda.
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.

Repite indefinidamente (la condicin de salida la comprobamos
"dentro").
Establece el choque de una moto otra, mirar el punto de la 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).












Presentacin de 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_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,420,350,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,50,80,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!", 200,180, palette_color[6]);
chocado =TRUE;
}

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

if (chocado)break;


/* Si ninguna ha colisionado, avanzan */
line (screen, posX1, posY1, futX1, futY1, palette_color[11]);
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 condicin de salida la comprobamos "dentro") */

readkey();
return 0;

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











CONCLUSION
En esta prctica pude aprender a realizar una aplicacin que evitara esperar el
teclado y que ninguna de las motos se parara si se dejaba de oprimir el teclado y
adems pude repasar varias funciones que habamos utilizado anteriormente en
otros mdulos de programacin.



BIBLIOGRAFIA
http://www.nachocabanes.com/videojuegos/ipj/ipj06.php

Vous aimerez peut-être aussi