practica 11 povi
TRANSCRIPT
-
8/12/2019 Practica 11 POVI
1/7
Colegio de educacin profesional tcnica del estado deVeracruz. 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. Usandolenguaje 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/
http://programaciondevideojuegosalexis.blogspot.mx/http://programaciondevideojuegosalexis.blogspot.mx/http://programaciondevideojuegosalexis.blogspot.mx/ -
8/12/2019 Practica 11 POVI
2/7
En esta prctica realizaremos un juego de tiro al plato, el cual consiste de un paisaje en elcual se van tirando platos y con el mouse vamos rompiendo los mismo y vamos ganandopuntos.
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 // Para declarar lo que es el "rand"#include // Para declarar lo que es el "sqrt"#include
Definimos las constantes globales.#define ANCHOPANTALLA 320#define ALTOPANTALLA 200#define MAXRADIODIANA 25#define MINRADIODIANA 5
Comentario [A1]: Definimos
ancho de la pantalla
-
8/12/2019 Practica 11 POVI
3/7
#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 intpuntos = 0,contadorActual = 0;
floata,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 graficoif(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);
return1;}
// Ahora se inicializan las variablesnumDianaActual = 1;srand(time(0));show_mouse(screen);
Comentario [A2]: Instalamoteclado, el tiempo y el mouse
http://www.nachocabanes.com/c/referencia/detalle.php?funcion=srandhttp://www.nachocabanes.com/c/referencia/detalle.php?funcion=srand -
8/12/2019 Practica 11 POVI
4/7
// Y termino indicando que no ha habido erroresreturn0;
}
/* -------------- Rutina de nuevo plato ----------- */void nuevoPlato(){
int xVerticeParabola,yVerticeParabola;
float pParabola;
// Un radio al azar entre el valor mximo y el mnimoradioDiana = (rand() % (MAXRADIODIANA - MINRADIODIANA))
+ MINRADIODIANA;
// La velocidad (incremento de X), similarincremXdiana = (rand() % (MAXINCREMXDIANA - MININCREMXDIANA))+ MININCREMXDIANA;
// Vrtice de la parbola, cerca del centro en horizontalxVerticeParabola = ANCHOPANTALLA/2 + (rand() % 40) - 20;// Y mitad superior de la pantalla, en verticalyVerticeParabola = (rand() % (ALTOPANTALLA/2));
// Calculo a, b y c de la parbolapParabola = ALTOPANTALLA/2;a = 1 / (2*pParabola);b = -xVerticeParabola / pParabola;
c = ((xVerticeParabola*xVerticeParabola) / (2*pParabola) )+ yVerticeParabola;
// Posicin horizontal: junto margen izquierdoposXdiana = radioDiana;// Posicin vertical: segn la parbolaposYdiana =
a*posXdiana*posXdiana +b*posXdiana +c;
}
/* -------------- Rutina de redibujar pantalla ---- */void redibujaPantalla(){
// Oculto ratnscare_mouse();// Borro pantalla
-
8/12/2019 Practica 11 POVI
5/7
clear_bitmap(screen);// Sincronizo con barrido para menos parpadeosvsync();
// Y dibujo todo lo que correspondarectfill(screen,0,0,ANCHOPANTALLA,ALTOPANTALLA-40,
makecol(70, 70, 255)); //Cielotextprintf(screen, font, 4,4, palette_color[13],
"Puntos: %d", puntos); // Puntuacinrectfill(screen,0,ALTOPANTALLA-40,ANCHOPANTALLA,ALTOPANTALLA,
makecol(0, 150, 0)); //Suelocirclefill(screen,
posXdiana, posYdiana, radioDiana,palette_color[15]); // Diana
if(numDianaActual
-
8/12/2019 Practica 11 POVI
6/7
install_int(aumentaContador, 10);
do{ // Parte que se repite para cada plato
nuevoPlato(); // Calculo su posicin inicialredibujaPantalla(); // Y dibujo la pantallaacertado = 0; // Todava no se ha acertado, claro
do{ // Parte que se repite mientras se mueve
// Compruebo el mouseif(mouse_b & 1) {
if(distancia(mouse_x, posXdiana, mouse_y,posYdiana)= contadorActual+RETARDO) {
contadorActual = contador+RETARDO;posXdiana += incremXdiana;posYdiana =
a*posXdiana*posXdiana +b*posXdiana +c;
redibujaPantalla();}
} while((posXdiana
-
8/12/2019 Practica 11 POVI
7/7
}END_OF_MAIN() Aqu termina Allegro.
Programa compilado
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