Você está na página 1de 14

Colegio de educacin profesional tcnica del estado de

Veracruz Lic. Jess Reyes Heroles Plantel #165


Modulo:
Programacin de videojuegos
Docente:
Miguel ngel Ramos Grande
Alumna:
Reina Mndez Daz
Carrera:
Informtica
Matricula:
111650432-3
Tema:
Reporte de prctica #15
Fecha:
16-junio-2014
Tuxpan de Rodrguez Cano Veracruz





INTRODUCCIN
Realizamos la prctica nmero 15, donde haremos uso del lenguaje de
programacin con la ayuda e mi compaera, 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 sera 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 pero fue una prctica que a nuestro parecer no sali al
100%.

Você também pode gostar