Está en la página 1de 7

COLEGIO DE EDUCACION PROFESIONAL TECNICO DEL

ESTADO DE VERACRUZ



NOMBRE DE LA ALUMNA:
JOVANA BERENICE VAZQUEZ MALERVA

GRADO Y CARRERA:
603 INFORMATICA

NOMBRE DEL PSP:
MIGUEL ANGEL RAMOS GRANDE

NOMBRE DEL MODULO:
PROGRAMACION DE VIDEOJUEGOS

UNIDAD DE APRENDIZAJE:
Diseo de videojuegos



PRACTICA #8





INTRODUCCION:
En esta prctica veremos cmo mover algn objeto de la pantalla programndolo con las
teclas de arriba-abajo izquierda-derecha o ya sea cualquier otra tecla, para ello utilizamos
allegro. Veremos como la serpiente va creciendo conforme va comiendo frutas.

PROPOSITO:
Elabora una aplicacin de videojuego mediante aproximaciones, para que se eviten parpadeos al
avnzar.

NOMBRE DE LA PRCTICA:

Evitar los parpadeos, juego mini sejrpiente 3 mediante


ESCENARIO:
LABORATORIO DE INFORMATICA

DURACION:
2 HORAS

MATERIALES:
Equipo de cmputo Core Duo o superior
Dispositivo de almacenamiento (USB)
Windows 2000 en adelante
Compilador de lenguaje seleccionado. (C, C++ o
Java)

PRCTICA:
Elaborar juego evitando esperar al teclado, motos de
luz








PRACTICA #8
Primero encend el equipo de cmputo, posteriormente abr el programa adecuado para realizar mi
primera prctica el cual fue dev-cpp:
Le di clic en archivo nuevo proyecto sale una ventana en donde le pondremos nombre a nuestra
prctica e indicaremos que ser en multimedia en donde trabajaremos, de ah haba una opcin que
dice allegro aplication static, le puse nombre a mi practica y posteriormente di clic en esa, y le di
aceptar para guardar, le damos aceptar luego otra vez aceptar y aceptar de nuevo, y nos sale un
cdigo, lo borre y empec a hacer mi prctica:
En esta prctica tenamos nada ms que modificar el videojuego de mini serpientes 3 agarrar la la
practica 7 ya que es lo mismo solo que en esta prctica las bolitas tienen que ir aumentando conforme
van comiendo las manzanas.

CODIGO:
#include <allegro.h>
#define POS_X_INI 16
#define POS_Y_INI 10
#define INC_X_INI 1
#define INC_Y_INI 0
#define PAUSA 350
#define TEC_ARRIBA KEY_E
#define TEC_ABAJO KEY_X
#define TEC_IZQDA KEY_S
#define TEC_DCHA KEY_D
int posX, posY;
int incX, incY;
int terminado;
int tecla;
#define ESCALA 10
#define ANCHOSPRITE 10
#define ALTOSPRITE 10
#define MAXFILAS 20
#define MAXCOLS 32
char mapa[MAXFILAS][MAXCOLS]={
};
int numFrutas = 8;
BITMAP *ladrilloFondo, *comida, *jugador;
typedef
char tipoSprite[ANCHOSPRITE][ALTOSPRITE];
tipoSprite spriteLadrillo =
{{0,2,2,2,2,2,2,2,2,0},
{2,1,1,1,1,2,2,1,1,2},
{2,2,1,1,1,1,1,1,1,2},
{2,2,1,1,1,1,1,1,1,2},
{2,1,3,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,2,1,1,1,1,3,3,2,2},
{0,2,2,2,2,2,2,2,2,0}
};
tipoSprite spriteComida =
{{00,00,00,12,00,00,00,00,00,00},
{00,00,11,12,11,00,12,11,00,00},
{00,14,14,14,12,12,14,14,00,00},
{14,13,14,14,14,11,14,14,14,00},
{14,14,14,14,14,14,14,13,14,00},
{14,14,14,14,14,14,13,13,14,00},
{14,14,14,14,14,14,13,14,14,00},
{14,14,14,14,14,14,14,14,14,00},
{00,14,14,14,14,14,14,14,00,00}
};

Matrices para que las paredes de
nuestro laberinto de la serpiente se
muestre en pantalla
tipoSprite spriteJugador =
{{0,0,4,4,4,4,4,0,0,0},
{0,4,5,5,5,5,5,4,0,0},
{4,5,6,6,6,6,6,5,4,0},
{4,5,6,5,6,6,6,5,4,0},
{4,5,6,6,6,6,6,5,4,0},
{4,5,6,6,6,6,6,5,4,0},
{0,4,5,5,5,5,5,4,0,0},
{0,0,4,4,4,4,4,0,0,0}
};
int longSerpiente=1;
struct {
int x;
int y;
}
trozoSerpiente[10];
void creaSprites()
{
int i, j;
RGB gris30 = { 30, 30, 30 };
RGB gris40 = { 40, 40, 40 };
RGB gris40verde45 = { 40, 45, 40 };
set_color( 1, &gris40 );
set_color( 2, &gris30 );
set_color( 3, &gris40verde45 );
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] ]);
RGB rojo60 = { 60, 0, 0 };
RGB rojo50 = { 50, 0, 0 };
RGB verde40 = { 0, 40, 0 };
RGB verde60 = { 0, 60, 0 };
set_color( 11, &verde40 );
set_color( 12, &verde60 );
set_color( 13, &rojo60 );
set_color( 14, &rojo50 );
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] ]);
RGB azul60 = { 0, 0, 60 };
RGB azul60gris10 = { 10, 10, 60 };
RGB azul60gris20 = { 20, 20, 60 };
set_color( 4, &azul60gris20 );
set_color( 5, &azul60gris10);
set_color( 6, &azul60 );
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] ]);
}
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);
}
}
int main()
{
int i;
allegro_init();
install_keyboard();
install_timer();
if (set_gfx_mode(GFX_SAFE, 320, 200, 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;
}
creaSprites();
dibujaFondo();
posX = POS_X_INI;
posY = POS_Y_INI;
incX = INC_X_INI;
incY = INC_Y_INI;
do {
dibujaFondo();
for (i=1; i<=longSerpiente; i++)
draw_sprite (screen, jugador, trozoSerpiente[i-1].x*ESCALA,
trozoSerpiente[i-1].y*ESCALA);
terminado = FALSE;
if (mapa[posY][posX] == 'F') {
mapa[posY][posX] = ' ';
numFrutas --;
if (numFrutas == 0) {
textout(screen, font,
"Ganaste!", 100, 90, palette_color[4]);
terminado = TRUE;
}
longSerpiente ++;

}
if (mapa[posY][posX] == 'X') {
textout(screen, font,
"Chocaste:(!", 100, 90, palette_color[10]);
terminado = TRUE;
}
if (terminado) break;
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;
for (i=longSerpiente-1; i>=1; i--) {
trozoSerpiente[i].x = trozoSerpiente[i-1].x;
trozoSerpiente[i].y = trozoSerpiente[i-1].y;
}
trozoSerpiente[0].x = posX;
trozoSerpiente[0].y = posY;
rest ( PAUSA );
}
while (TRUE);
readkey();
return 0;
}
END_OF_MAIN();
Esto es para que cuando la mini
serpiente haya terminado de comer
las frutas nos marque que el usuario
gano
Final de nuestro programa
Esto es para que nuestra serpiente
se mueva al pulsar una tecla