practica 11 povi

Upload: alexis-hurtado

Post on 03-Jun-2018

216 views

Category:

Documents


0 download

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