Está en la página 1de 8

Colegio de educacin profesional tcnica del

estado de Veracruz. Plante #165 Lic. Jess Reyes


Heroles
Modulo:
Manejo de redes
Docente:
Miguel ngel Ramos Grande
Alumna:
Karen Lizbeth Nolasco Garca.
Manuel Alexis Hurtado Morales.
Carrera:
Informtica
Practica 7: Crear juego mini serpiente 2 usando
lenguaje de programacin.

Tuxpan Veracruz de Rodrguez Cano.




Iniciamos alegro para empezar nuestro video juego de la mini serpiente:
#include <allegro.h>
Definimos posiciones iniciales.
#define POS_X_INI 16
#define POS_Y_INI 10
#define INC_X_INI 1
#define INC_Y_INI 0
Realizamos una pausa en milisegundos.
#define PAUSA 300
Definimos nuestras teclas a utilizar en este caso sern nmeros de nuestro
teclado por lo tanto agregamos _PAD.
#define TEC_ARRIBA KEY_8_PAD
#define TEC_ABAJO KEY_2_PAD
#define TEC_IZQDA KEY_4_PAD
#define TEC_DCHA KEY_6_PAD
Posicion Actual.
int posX, posY;
Incremento en la posicion.
int incX, incY;
Variable que identifica si ha chocado o si ha comido todas las frutas.
int terminado;
Detecta si pulsamos alguna tecla.
int tecla;
Define escala entre el tamao del mapa y de la pantalla.
#define ESCALA 10
Ancho y alto de los Sprite.
#define ANCHOSPRITE 10
#define ALTOSPRITE 10
Filas y columnas a utilizer en nuestro codigo
#define MAXFILAS 50
#define MAXCOLS 63
Mapa del video juego, imprimimos pantalla ya que copiando el codigo se desconfigura
char mapa[MAXFILAS][MAXCOLS]={

Numero de frutas colocadas en nuestro Videojuego.
int numFrutas = 15;
Sprites.
BITMAP *ladrilloFondo, *comida, *jugador;
typedef
char tipoSprite[ANCHOSPRITE][ALTOSPRITE];
Matriz
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 sprite.
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();
install_keyboard();
install_timer();
Entramos a modo Grafico.
if (set_gfx_mode(GFX_SAFE, 600, 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;
}
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[7]);
terminado = TRUE;
}
} Si la serpiente topa con pared, se acabo el juego.
if (mapa[posY][posX] == 'X') {
textout(screen, font,"Chocaste!", 100, 90, palette_color[7]);
terminado = TRUE;
}
if (terminado) break;
Se comprueba 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;
Pequea pausa antes de continuar.
rest ( PAUSA );
} Repetimos indefininamente
while (TRUE);

readkey();
return 0;
}END_OF_MAIN();
Programa compilado:

Conclusion: en esta practica se llevaron a cabo graficos, y la utilizacion de repeticion tanto pausas
y diversos procedimientos nuevos, como la creacion de los ladrilos y las frutas.