You are on page 1of 10

COLEGIO DE EDUCACION PROFESIONAL

TECNICA DEL ESTADO DE VERACRUZ


LIC. JESUS REYES HEROLES



ALUMNO: ngel Martnez Hernndez
COMPAERA DE EQUIPO: Emma Graciela Santos Blanco
GRUPO: 604
MATRICULA: 111650026-3
CARERRA: P.T.B. en Informtica
MODULO: Programacin De Videojuegos
DOCENTE: Miguel ngel Ramos Grande
CONTENIDO: Esta prctica contiene un videojuego manejando distintas
aproximaciones usando el programa de Dev c++ y el uso del lenguaje de
programacin con la librera allegro.
PRACTICA 15: Manejo de distintas aproximaciones usando lenguaje de
programacin.
PROPOSITO DE LA PRCTICA: Elabora una aplicacin de videojuego juego de
Marciano usando lenguaje de programacin que muestre los movimientos
mediante varios tipos de acercamientos.








INTRODUCCIN
Realizamos la prctica nmero 15, donde haremos uso del lenguaje de
programacin con la ayuda e mi compaera Emma Graciela, con la librera de
Allegro Static.
DESARROLLO
1.- Para el desarrollo de la prctica 7 realizamos los siguientes pasos:
Abrir Dev-Cpp>Clic en Archivo>Seleccionamos el men Nuevo>Proyecto, como
aparece en la imagen siguiente.






2. - Se abrir la siguiente ventana y seleccionamos el men Multimedia>Allegro
Application (Static), y escribimos el nombre de nuestro proyecto que es
Miniserpiente2.Como se muestra en la imagen de abajo.








Una vez escrito el nombre nos mostrara un cdigo que nos mostrara por defecto, y
que tendremos que borrar ya que no nos ser de utilidad para nuestro programa
que queremos crear.



El cdigo que ocuparemos es el siguiente:
#include <allegro.h>

/* -------------- Constantes globales ------------- */
#define ANCHOPANTALLA 320
#define ALTOPANTALLA 200

// Los dos siguientes valores son los retardos
// hasta mover la nave y el marciano, pero ambos
// en centsimas de segundo
#define RETARDOCN 10
#define RETARDOCM 25

#define MARGENSUP 40
#define MARGENDCHO 30
#define MARGENIZQDO 30
#define MARGENINF 50
#define INCREMX 5
#define INCREMY 15

/* -------------- Variables globales -------------- */
PALETTE pal;
BITMAP *imagen;
BITMAP *nave;
BITMAP *marciano1;
BITMAP *marciano2;

int fotograma = 1;

int xMarciano = MARGENIZQDO;
int yMarciano = MARGENSUP;
int xNave = ANCHOPANTALLA / 2;
int yNave = ALTOPANTALLA-16-MARGENINF;

int desplMarciano = INCREMX;
int desplNave = INCREMX;

int puedeMoverMarciano = 1;
int puedeMoverNave = 1;
int tecla;

int salir = 0;


/* -------------- Rutinas de temporizacin -------- */
// Contadores para temporizacin
volatile int contadorN = 0;
volatile int contadorM = 0;

// La rutina que lo aumenta cada cierto tiempo
void aumentaContadores(void)
{
contadorN++;
contadorM++;
}

END_OF_FUNCTION(aumentaContadores);




/* -------------- Rutina de inicializacin -------- */
int inicializa()
{
allegro_init(); // Inicializamos Allegro
install_keyboard();
install_timer();

// Intentamos entrar a modo grafico
if (set_gfx_mode(GFX_SAFE, ANCHOPANTALLA, ALTOPANTALLA, 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;
}

// e intentamos abrir imgenes
imagen = load_pcx("spr_inv.pcx", pal);
if (!imagen) {
set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
allegro_message("No se ha podido abrir la imagen\n");
return 1;
}
set_palette(pal);

// Ahora reservo espacio para los otros sprites
nave = create_bitmap(16, 16);
marciano1 = create_bitmap(16, 16);
marciano2 = create_bitmap(16, 16);

// Y los extraigo de la imagen "grande"
blit(imagen, nave // bitmaps de origen y destino
, 32, 32 // coordenadas de origen
, 0, 0 // posicin de destino
, 16, 16); // anchura y altura

blit(imagen, marciano1, 0, 32, 0, 0, 16, 16);
blit(imagen, marciano2, 16, 32, 0, 0, 16, 16);

// Rutinas de temporizacin
// Bloqueamos las variables y la funcin del temporizador
LOCK_VARIABLE( contadorN );
LOCK_VARIABLE( contadorM );
LOCK_FUNCTION( aumentaContadores );

// Y ponemos el temporizador en marcha: cada 10 milisegundos
// (cada centsima de segundo)
install_int(aumentaContadores, 10);

// Y termino indicando que no ha habido errores
return 0;
}

/* -------------- Rutina de inicializacin -------- */
int mueveMarciano()
{
// Finalmente, calculo nueva posicin
xMarciano += desplMarciano;
// Compruebo si debe bajar
if ((xMarciano > ANCHOPANTALLA-16-MARGENDCHO)
|| (xMarciano < MARGENIZQDO))
{
desplMarciano = -desplMarciano; // Direccin contraria
yMarciano += INCREMY; // Y bajo una lnea
}
// O si debe volver arriba
if (yMarciano > ALTOPANTALLA-16-MARGENINF) {
xMarciano = MARGENIZQDO;
yMarciano = MARGENSUP;
desplMarciano = INCREMX;
}
}

/* ------------------------------------------------ */
/* */
/* -------------- Cuerpo del programa ------------- */

int main()
{

// Intento inicializar
if (inicializa() != 0)
exit(1);


do { // Parte que se repite hasta pulsar tecla

// Slo se pueden mover tras un cierto tiempo
if (contadorM >= RETARDOCM) {
puedeMoverMarciano = 1;
contadorM = 0;
}
if (contadorN >= RETARDOCN) {
puedeMoverNave = 1;
contadorN = 0;
}

if (puedeMoverMarciano || puedeMoverNave) {

// Compruebo teclas pulsadas para salir
// o mover la nave
if (keypressed()) {
tecla = readkey() >> 8;
if ( tecla == KEY_ESC)
salir = 1;
if (puedeMoverNave) {
if (( tecla == KEY_RIGHT)
&& (xNave < ANCHOPANTALLA-16-MARGENDCHO)) {
xNave += INCREMX;
puedeMoverNave = 0;
}
if (( tecla == KEY_LEFT)
&& (xNave > MARGENIZQDO+16)) {
xNave -= INCREMX;
puedeMoverNave = 0;
}
clear_keybuf();
}
}

// Sincronizo con el barrido para evitar
// parpadeos, borro la pantalla y dibujo la nave
vsync();
clear_bitmap(screen);
draw_sprite(screen, nave, xNave, yNave);

// Dibujo un marciano u otro, alternando
if (fotograma==1) {
draw_sprite(screen, marciano1, xMarciano, yMarciano);
if (puedeMoverMarciano)
fotograma = 2;
} else {
draw_sprite(screen, marciano2, xMarciano, yMarciano);
if (puedeMoverMarciano)
fotograma = 1;
}

// Y calculo su nueva posicin si corresponde
if (puedeMoverMarciano) {
mueveMarciano();
puedeMoverMarciano = 0;
}

}

} while (!salir);

destroy_bitmap(imagen);
readkey();
return 0;

}

/* Termino con la "macro" que me pide Allegro */
END_OF_MAIN();
Para ejecutar el programa nos vamos a la pestaa Ejecutar>Compilar y Ejecutar o
tambin con la tecla (F9), como se muestra en la imagen de abajo.





Al ejecutar nos aparecer la siguiente ventana, donde apreciamos que las
imgenes se cargaron correctamente no como la prctica lo peda pero pudimos
visualizar imgenes en movimiento.

Este seria el mensaje en caso de que las imgenes no pudieran ser llamadas.

CONCLUSION
En la prctica no nos apareci los problemas para que se puedan corregir, y nos
dimos cuenta de que la matriz es un papel importante para el uso de las paredes
en nuestro juego, aprendimos a llevar a cabo lo que el profesor nos ense que
fue cargar imgenes y mover con las teclas de direccionamiento.

You might also like