Colegio de educacin profesional tcnica del estado de Veracruz.
Plante #165 Lic. Jess Reyes Heroles
Mdulo: Programacin De Videojuegos Docente: Miguel ngel Ramos Grande Alumno: Manuel Alexis Hurtado Morales. Carrera: Informtica Matricula: 111650246-7 Prctica 7: Crear juego mini-serpiente 2 usando lenguaje de programacin Propsito de la prctica: Elabora una aplicacin de videojuego con figuras multicolor usando lenguaje de programacin para que las figuras se muevan Direccin del blog: http://programaciondevideojuegosalexis.blogspot.mx/
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},
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:
Conclusin: en esta prctica se llevaron a cabo grficos, y la utilizacin de repeticin tanto pausas y diversos procedimientos nuevos, como la creacin de los ladrillos y las frutas.