Está en la página 1de 11

COLEGIO DE EDUCACION PROFESIONAL TECNICA DEL ESTADO DE

VERACRUZ
LIC. JESUS REYES HEROLES



ALUMNO: Emma Graciela Santos Blanco
COMPAERA DE EQUIPO: ngel Martnez Hernndez
GRUPO: 604 PRCTICA: 6
MATRICULA: 111650026-3
CARERRA: P.T.B. en Informtica

MODULO: Programacin De Videojuegos

DOCENTE: Miguel ngel Ramos Grande

PRACTICA 6: Crea juego Mini Serpiente 1 con uso de Mapas

PROPOSITO DE LA PRCTICA: Elabora una aplicacin de videojuego con
uso de Mapas para que una figura avance por la pantalla; si choca con la
pared exterior, con su propia "cola" o con algn otro obstculo, muere.



INTRODUCCIN
Hablaremos de como hicimos la prctica nmero 6, que trato de elaborar una Mini
Serpiente con el uso de las teclas para su movimiento requerido con la biblioteca de
Allegro.
DESARROLLO
1.- Aqu mostramos cuales fueron los pasos que realizamos para terminar la practica:
Lo primero que hicimos fue Abrir Dev-Cpp>Clic en Archivo>Seleccionamos el men
Nuevo>Proyecto, como aparece en la imagen siguiente.








2. Nos mandara la siguiente ventana, donde seleccionamos el men
Multimedia>Allegro Application (Static), damos nombre a nuestro proyecto.







La prctica nos muestra un cdigo los corregimos y quedo de la siguiente manera:
#include <allegro.h>
/* Posiciones X e Y al inicio */
#define POS_X_INI 16
#define POS_Y_INI 10
#define INC_X_INI 1
#define INC_Y_INI 0
/* Pausa en milisegundos */
#define PAUSA 350
/* Teclas predefinidas */
#define TEC_ARRIBA KEY_W
#define TEC_ABAJO KEY_Z
#define TEC_IZQDA KEY_A
#define TEC_DCHA KEY_S
int posX, posY; /* Posicion actual */
int incX, incY; /* Incremento de la posicin */
/* Terminado: Si ha chocado o comida toda las frutas */
int terminado;
/* La tecla pulsada */
int tecla;
/* Escala: relacin entre tamano de mapa y de pantalla */
#define ESCALA 10
/* Ancho y alto de los sprites */
#define ANCHOSPRITE 10
#define ALTOSPRITE 10
/* Y el mapa que representa a la pantalla */
/* Como usaremos modo grafico de 320x200 puntos */
/* y una escala de 10, el tablero medir 32x20 */
#define MAXFILAS 20
#define MAXCOLS 32
char mapa[MAXFILAS][MAXCOLS]={


"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"X X X",
"X F XXXXXX F X X",
"X X F X F X",
"X XXXXXXXXXX X X",
"X X X X",
"X X X X",
"X X F X X",
"X X X F X",
"X X X",
"X X X X",
"X F XXXXXXXXXXX X X",
"X X X",
"X X F X",
"X X X X X",
"X X X X",
"X X F X X",
"X F X X X",
"X X F X",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
};
int numFrutas = 7;
/* Nuestros sprites */
BITMAP *ladrilloFondo, *comida, *jugador;
typedef
char tipoSprite[ANCHOSPRITE][ALTOSPRITE];
/* El sprite en si: matriz de 30x30 bytes */
tipoSprite spriteLadrillo =
{{0,2,2,2,2,2,2,2,2,0},
{2,1,1,1,1,1,1,1,1,2},
{2,1,1,1,1,1,1,1,1,2},
{2,1,1,1,1,1,1,1,1,2},
{2,1,1,1,1,1,1,1,1,2},
{2,1,1,1,1,1,1,1,3,2},
{2,1,1,1,1,1,1,3,3,2},
{2,1,1,1,1,1,3,3,2,2},
{2,2,2,2,2,2,2,2,2,0}
};
tipoSprite spriteComida =
{{0,0,0,2,0,0,0,0,0,0},
{0,0,2,2,0,0,2,2,0,0},
{0,4,4,4,2,2,4,4,0,0},
{4,4,4,4,4,2,4,4,4,0},
{4,4,4,4,4,4,4,4,4,0},
{4,4,4,4,4,4,4,4,4,0},
{4,4,4,4,4,4,4,4,4,0},
{4,4,4,4,4,4,4,4,4,0},
{0,4,4,4,4,4,4,4,0,0}
};
tipoSprite spriteJugador =
{{0,0,3,3,3,3,3,0,0,0},
{0,3,1,1,1,1,1,3,0,0},
{3,1,1,1,1,1,1,1,3,0},
{3,1,1,1,1,1,1,1,3,0},
{3,1,1,1,1,1,1,1,3,0},
{3,1,1,1,1,1,1,1,3,0},
{0,3,1,1,1,1,1,3,0,0},
{0,0,3,3,3,3,3,0,0,0}
};
/* -------------- Rutina de crear los sprites ------------- */


void creaSprites()
{
int i, j;

ladrilloFondo = create_bitmap(10, 10);
clear_bitmap(ladrilloFondo);
for(i=0; i<ANCHOSPRITE; i++)
for (j=0; j<ALTOSPRITE; j++)
putpixel(ladrilloFondo, i, j,
palette_color[ spriteLadrillo[j][i] ]);
comida = create_bitmap(10, 10);
clear_bitmap(comida);
for(i=0; i<ANCHOSPRITE; i++)
for (j=0; j<ALTOSPRITE; j++)
putpixel(comida, i, j,
palette_color[ spriteComida[j][i] ]);
jugador = create_bitmap(10, 10);
clear_bitmap(jugador);
for(i=0; i<ANCHOSPRITE; i++)
for (j=0; j<ALTOSPRITE; j++)
putpixel(jugador, i, j,
palette_color[ spriteJugador[j][i] ]);
}
/* -------------- Rutina de dibujar el fondo ------------- */
void dibujaFondo()
{
int i, j;
clear_bitmap(screen);
for(i=0; i<MAXCOLS; i++)
for (j=0; j<MAXFILAS; j++) {
if (mapa[j][i] == 'X')
draw_sprite(screen, ladrilloFondo, i*ESCALA, j*ESCALA);
if (mapa[j][i] == 'F')
draw_sprite(screen, comida, i*ESCALA, j*ESCALA);
}

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

int main()
{
allegro_init(); /* Inicializamos Allegro */
install_keyboard();
install_timer();
/* Intentamos entrar a modo grafico */
if (set_gfx_mode(GFX_SAFE, 500, 300, 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 */
creaSprites();
dibujaFondo();
/* Valores iniciales */
posX = POS_X_INI;
posY = POS_Y_INI;
incX = INC_X_INI;
incY = INC_Y_INI;
/* Parte repetitiva: */
do {
dibujaFondo();
draw_sprite (screen, jugador, posX*ESCALA, posY*ESCALA);
terminado = FALSE;

/* Si paso por una fruta: la borro y falta una menos */
if (mapa[posY][posX] == 'F') {
mapa[posY][posX] = ' ';
numFrutas --;
if (numFrutas == 0) {
textout(screen, font,
"Ganaste!", 100, 90, palette_color[8]);
terminado = TRUE;
}
}
/* Si choco con la pared, se acabo */
if (mapa[posY][posX] == 'X') {
textout(screen, font,
"Chocaste!", 100, 90, palette_color[7]);
terminado = TRUE;
}
if (terminado) break;
/* Compruebo si se ha pulsado alguna tecla */
if ( keypressed() ) {
tecla = readkey() >> 8;
switch (tecla) {
case TEC_ARRIBA:
incX = 0; incY = -1; break;
case TEC_ABAJO:
incX = 0; incY = 1; break;
case TEC_IZQDA:
incX = -1; incY = 0; break;
case TEC_DCHA:
incX = 1; incY = 0; break;
}
}
posX += incX;
posY += incY;

/* Peque?a pausa antes de seguir */
rest ( PAUSA );
}
while (TRUE); /* Repetimos indefininamente */
/* (la condici?n de salida la comprobamos "dentro") */
readkey();
return 0;
}
/* Termino con la "macro" que me pide Allegro */
END_OF_MAIN();
Al compilar el programa queda de la siguiente manera


CONCLUSION:
En esta prctica utilizamos la librera de allegro en el programa Dev C++, creamos el
laberinto por medio de matrices.

También podría gustarte