You are on page 1of 9

Colegio de Educacin Profesional Tcnica del Estado de

Veracruz
Plantel Tuxpan Lic. Jess Reyes Heroles165
Docente: Miguel ngel Ramos Grande
Modulo: Programacin de videojuegos
Practica 7: Crear juego mini serpiente 2 usando lenguaje de
programacin
Propsito: Elabora una aplicacin de videojuego con figuras
multicolor usando lenguaje de programacin para que las
figuras se muevan
Alumnas:
Diana Laura Ramrez Xochihua
Lucia Ramrez Xochihua


604-INFORMATICA





INTRODUCCIN:
El da mircoles comenc a realizar la practica numero 7 la cual consista en elaborar el
juego de mini serpiente 2. Era la continuacin de la prctica numero 6
DESARROLLO:
Primero comenzamos abriendo nuestro programa Dev-
C++>archivo>nuevo>proyecto>Multimedia>Static.
Una de las instrucciones de esta prctica dice que tenemos
que crear un videojuego que contenga figuras multicolores
que se muevan.
Y para eso dimos continuacin a la prctica anterior, Solo que
en esta le dimos ms animacin y color al video juego, Para
lograr hacer eso utilizamos la funcin SPRITE: para crear
figuras "transparentes": con "huecos" alrededor o en su
interior y a travs de estos huecos donde se ve el fondo.
Ejemplo:
dibujar_sprite(imagen, posicX, posicY);
para i = 1 hasta ANCHOSPRITE
para j = 1 hasta ALTOSPRITE
si imagen[j,i] <> 0 entonces
dibujar_punto(x+i-1, y+j-1, imagen[j,i]);
Cdigo
#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_W
#define TEC_ABAJO KEY_Z
#define TEC_IZQDA KEY_A
#define TEC_DCHA KEY_S
int posX, posY;
int incX, incY;
int terminado;
int tecla;
#define ESCALA 10
#define ANCHOSPRITE 10
#define ALTOSPRITE 10
#define MAXFILAS 20
#define MAXCOLS 33

char mapa[MAXFILAS][MAXCOLS]={
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"X X X",
"X F X X",
"X F X F X",
"X XXXXX X X",
"X X X X",
"X X X X X",
"X X X X XXXX",
"X X X X",
"X X X X",
"X X X X",
"X F X X",
"X X X",
"X X F X",
"X X X X",
"X X X X",
"X X F X X",
"X F X X X",
"X X F X",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
};

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,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}
};
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] ]);

}
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()
{
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();
draw_sprite (screen, jugador, posX*ESCALA, posY*ESCALA);
terminado = FALSE;
if (mapa[posY][posX] == 'F') {
mapa[posY][posX] = ' ';
numFrutas --;
if (numFrutas == 0) {
textout(screen, font,
"Ganaste!", 100, 90, palette_color[14]);
terminado = TRUE;
}
}

if (mapa[posY][posX] == 'X') {
textout(screen, font,
"Chocaste!", 100, 90, palette_color[13]);
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
rest ( PAUSA );
}
while (TRUE);
readkey();
return 0;
}
END_OF_MAIN();


Como tambin sabemos en este juego se colocan
condiciones, cuando la serpiente colapsa con los
ladrillos se dice que surge una colisin y es ah
donde el programa manda un mensaje diciendo que
chocaste y sucesivamente te saca del juego.



Tambin se coloc otra condicin, que cuando el jugador haya comido
todas las frutas el programa debe mandar un mensaje donde dir
Ganaste.
Despus de que se termina de checar y verificar el videojuego se compila para observar
si hay algn error, y si no se ejecuta el videojuego. Y as hemos terminado.


CONCLUSIN:
En esta prctica se ocuparon nuevos comandos los cuales con ayuda de google pude
saber cules eran sus unciones y pues no se me dificulto mucho tambin gracias al
apoyo de mis compaeros, adems de que esta prctica era la continuacin de la 6 pues
ya no era tanto hacer sino que era de implementar mas estructuras o comandos.

You might also like