You are on page 1of 10

Colegio de Educación Técnica del Estado de Veracruz

CONALEP N° 165
Lic. Jesús Reyes Heroles
Maestro:
Miguel Ángel Ramos Grande
Modulo:
Programación para videojuegos
Alumna:
Lucia Ramírez Xochihua
604/informática
Practica 6:
Uso de Mapas. Juego Mini Serpiente 1
Propósito de la práctica:
Elaborar un juego donde una figura va avanzando por la
pantalla; si choca con la pared exterior, con su propia "cola" o
con algún otro obstáculo, muere.
blog: http://luciaramirezxochihua96videojuegos.blogspot.mx/
Fecha:_____________________

Comentarios:
Introducción:
El día lunes 26 de mayo entramos a nuestro laboratorio de
cómputo para llevar a cabo la practica número 6 la cual
consistía en el juego de Mini serpiente 1.
Desarrollo:
1.- primero comencé abriendo mi programa
de Dev-C++
2.- Y como ya había comenzado con un poco
de código solo le di clic en abrir nuevo
proyecto.

Después elaboramos una secuencia de
algoritmos para crear una serpiente que
avance por la pantalla; si choca con la pared exterior, con su
propia "cola" o con algún otro obstáculo, muere. Y es ahí
donde termina el juego.



Luego se elaboró un mapa con las posibles posiciones de la
pantalla, e indicando cuales están vacías, cuales
Ocupadas por obstáculos y cuales ocupadas por comida.

Y enseguida se comenzó a programar…
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_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 32

char mapa[MAXFILAS][MAXCOLS]={
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"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 X",
"X X X X",
"X X X X",
"X X X X",
"X F XXXXX 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 X F X",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
};

int numFrutas = 7;

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();


Conclusión:
En esta práctica aprendí cosas nuevas, creo que sí estuvo un poco complicada
ya que fueron muchas cosas, muchas sentencias, declaraciones, y pruebas,
poro creo que en cierta forma me beneficio ya que algo parecido vi el
semestre pasado, y también con ayuda de mi maestro se logró realiza.r