Colegio de educacin profesional tcnica del estado de
Veracruz. Plante #165 Lic. Jess Reyes Heroles
Modulo: Programacin De Videojuegos Docente: Miguel ngel Ramos Grande Alumno: Manuel Alexis Hurtado Morales. Carrera: Informtica Grupo: 604 info Matrcula: 111650246-7 Prctica 11: Aplicacin de matemticas para Juego: Tiro Al Plato. Usando lenguaje de programacin Propsito de la prctica: Elabora una aplicacin de videojuego de Tiro Al plato usando lenguaje de programacin para la aplicacin de conceptos de geometra plana. Direccin del blog: http://programaciondevideojuegosalexis.blogspot.mx/ En esta prctica realizaremos un juego de tiro al plato, el cual consiste de un paisaje en el cual se van tirando platos y con el mouse vamos rompiendo los mismo y vamos ganando puntos. Comenzamos declarando las libreras a utilizar ya que son importantes en el videojuego. 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 abrira la siguiente ventana y seleccionamos el men siguiente:
#include <stdlib.h> // Para declarar lo que es el "rand" #include <math.h> // Para declarar lo que es el "sqrt" #include <allegro.h>
Definimos las constantes globales. #define ANCHOPANTALLA 320 #define ALTOPANTALLA 200 #define MAXRADIODIANA 25 #define MINRADIODIANA 5 Comentario [A1]: Definimos el alto y el ancho de la pantalla #define NUMDIANAS 12 #define MAXINCREMXDIANA 20 #define MININCREMXDIANA 10 #define RETARDO 7
//Definimos las variables Globales. int TamanyoDianaActual, numDianaActual, posXdiana, posYdiana, radioDiana, incremXdiana, incremYdiana, acertado = 0; // Si atinamos a un plato, pasa otro plato nuevo.
long int puntos = 0, contadorActual = 0;
float a,b,c; // Se dibuja la parbola del plato.
/* -------------- Se empieza con la Rutina de inicializacin -------- */ int inicializa() { allegro_init(); // Se inicia Allegro install_keyboard(); install_timer(); install_mouse();
// Intentamos entrar a modo grafico if (set_gfx_mode(GFX_SAFE, ANCHOPANTALLA, ALTOPANTALLA, 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; }
// Ahora se inicializan las variables numDianaActual = 1; srand(time(0)); show_mouse(screen);
Comentario [A2]: Instalamos el teclado, el tiempo y el mouse // Y termino indicando que no ha habido errores return 0; }
/* -------------- Rutina de nuevo plato ----------- */ void nuevoPlato() { int xVerticeParabola, yVerticeParabola; float pParabola;
// Un radio al azar entre el valor mximo y el mnimo radioDiana = (rand() % (MAXRADIODIANA - MINRADIODIANA)) + MINRADIODIANA; // La velocidad (incremento de X), similar incremXdiana = (rand() % (MAXINCREMXDIANA - MININCREMXDIANA)) + MININCREMXDIANA;
// Vrtice de la parbola, cerca del centro en horizontal xVerticeParabola = ANCHOPANTALLA/2 + (rand() % 40) - 20; // Y mitad superior de la pantalla, en vertical yVerticeParabola = (rand() % (ALTOPANTALLA/2));
// Calculo a, b y c de la parbola pParabola = ALTOPANTALLA/2; a = 1 / (2*pParabola); b = -xVerticeParabola / pParabola; c = ((xVerticeParabola*xVerticeParabola) / (2*pParabola) ) + yVerticeParabola;
/* -------------- Rutina de redibujar pantalla ---- */ void redibujaPantalla() { // Oculto ratn scare_mouse(); // Borro pantalla clear_bitmap(screen); // Sincronizo con barrido para menos parpadeos vsync();
// Y dibujo todo lo que corresponda rectfill(screen,0,0,ANCHOPANTALLA,ALTOPANTALLA-40, makecol(70, 70, 255)); //Cielo textprintf(screen, font, 4,4, palette_color[13], "Puntos: %d", puntos); // Puntuacin rectfill(screen,0,ALTOPANTALLA-40,ANCHOPANTALLA,ALTOPANTALLA, makecol(0, 150, 0)); //Suelo circlefill(screen, posXdiana, posYdiana, radioDiana, palette_color[15]); // Diana if (numDianaActual <= NUMDIANAS) { textprintf(screen, font, 4,190, palette_color[13], "Platos: %d", NUMDIANAS-numDianaActual); }
unscare_mouse(); }
/* -------------- Distancia entre dos puntos ------ */ float distancia(int x1, int x2, int y1, int y2) { return (sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)) ); } /* -------------- Rutinas de temporizacin ---- */ volatile long int contador = 0;
Conclusin: En esta prctica realizamos un videojuego con el uso del mouse ya que al dar clic en el plato este se rompe y pasa otro plato y se acumulan puntos, tuvimos que conocer e investigar ms comandos, y definimos constantes. Esta prctica es algo diferente a las anteriores, pero se utilizan conocimientos ya empleados, para hacer ms fcil la compresin del cdigo. Aqu se muestran los puntos que llevamos acumulados. Plato Indica que nuestra partida ha terminado