Elabora una aplicacin de videojuego con uso de Mapas para que
una figura avance por la pantalla; si choca con la pared exterior, con su propia "cola" o con algn otro obstculo, muere. El juego est dirigido a los nios y jvenes. 1.- Para la elaboracin de esta prctica lo primero que realice es: Abrir Dev-Cpp Damos clic en ARCHIVO Seleccionamos el men NUEVO Enseguida damos clic en PROYECTO
2. Se abrir la ventana
3.- de todas estas aplicaciones elegimos la siguiente
Damos clic en aceptar 5.- Se abrir la siguiente ventana en donde pondremos el nombre a nuestro proyecto y elegiremos la ubicacin en donde se guardara nuestro proyecto
6.- el siguiente paso es comenzar a programar, para la elaboracin de este programa el cdigo de la prctica es el siguiente. *Empezamos introduciendo el cdigo agregndole las libreras correspondientes entre ellas la librera de <allegro.h>
#include <allegro.h> /* Posiciones X e Y iniciales */ Se deben definir las posiciones iniciales de X y Y como se muestra a continuacin. #define POS_X_INI 16 #define POS_Y_INI 10 #define INC_X_INI 1 #define INC_Y_INI 0 /* Pausa en milisegundos entre un "fotograma" y otro */ #define PAUSA 350 /* Teclas predefinidas */ Declararemos las variables de la posicin actual y el incremento de la posicin. #define TEC_ARRIBA KEY_E #define TEC_ABAJO KEY_X #define TEC_IZQDA KEY_S #define TEC_DCHA KEY_D
int posX, posY; /* Posicion actual */ int incX, incY; /* Incremento de la posicion */
/* Terminado: Si ha chocado o comida todas las frutas */ int terminado; Declaramos la variable que vamos a pulsar para almacenar la Tecla pulsada. int tecla; Definimos la escala entre el tamao de mapa y de la pantalla.
/* La tecla pulsada */ int tecla; /* Escala: relacion entre tama?o de mapa y de pantalla */ #define ESCALA 10 /* Ancho y alto de los sprites */ Se define el alto y el ancho de los sprite. #define ANCHOSPRITE 20 #define ALTOSPRITE 20 /* Y el mapa que representa a la pantalla */ /* Como usaremos modo grafico de 320x200 puntos */ /* y una escala de 10, el tablero medira 32x20 */ #define MAXFILAS 30 #define MAXCOLS 42
Se va diseando la posicin en la que se guste poner los ladrillos.
char mapa[MAXFILAS][MAXCOLS]={ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "X X", "X XXX XXXXX X X", "X X X X", "X XXX X X X", "X X X X", "X X X X", "X X X", "X X X X", "X XXXXXXXXXX X X", "X X X X", "X XXXXXX X X", "X X XXXX X", "X X X X", "X XXX X X X", "X X X X X", "X X", "X XX XX X", "X X", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" };
int numFrutas = 7; /* Nuestros sprites */ BITMAP *ladrilloFondo, *comida, *jugador; typedef char tipoSprite[ANCHOSPRITE][ALTOSPRITE]; /* El sprite en si: matriz de 30x30 bytes */
/* Intentamos entrar a modo grafico */ 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; } /* ----------------------- Si todo ha ido bien: empezamos */
creaSprites(); dibujaFondo();
/* Valores iniciales */ Empezamos mandamos a llamar las funciones de nuestros sprites y las del fondo de la pantalla. 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 choco con la pared, se acabo */ if (mapa[posY][posX] == 'X') { textout(screen, font, "ups chocaste!", 100, 90, palette_color[13]); terminado = TRUE; }
if (terminado) break;
/* Compruebo 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;
/* Peque?a pausa antes de seguir */ rest ( PAUSA );
} while (TRUE); /* Repetimos indefininamente */ /* (la condici?n de salida la comprobamos "dentro") */
readkey(); return 0;
} /* Termino con la "macro" que me pide Allegro */ Y de esta manera se estar concluyendo el programa. END_OF_MAIN();
Conclusion: programa fue uno ms para practicar los siguientes.