Mostrando entradas con la etiqueta define. Mostrar todas las entradas
Mostrando entradas con la etiqueta define. Mostrar todas las entradas

viernes, 8 de julio de 2011

Curso de programación: Capítulo 2. Aplicación de los defines


Hola a todos,

Este curso de programación no lo teneis que ver como un curso a la vieja usanza sino como un ente interactivo en el que en base a vuestras preguntas y sugerencias iré construyendo capitulos que intenten resolver vuestras dudas.

Hace pocas horas uno de los lectores del blog me ha comentado por el gtalk que ha empezado a provar el motor 2D y que le parece muy engorroso tener que escribir cada vez que quiere hacer algo:
                                Core::singleton().loquesea();

Y tiene razón. Así que aprovecho la oportunidad para que los que no tienen demasiada idea de prorgamación en C/C++ puedan ir entendiendo los conceptos mediante la práctica.

La forma de resolver este problema es sencilla mediante un define.Como? En el core.h incluimos

//Hacemos un poco más facil la vida al programador de juegos
#define LPE Core::singleton()

Y así en el código del juego las llamadas quedan bastante más cortas (ignorad las funciones que veais raras no son mas que el ejemplo que estoy haciendo para el capitulo 18 del curso del game engine, cuando llegue el momento os lo enseñare :D ) :

void draw ()
    {
        static bool right = true;
        static int angle = 0;
        int x,y;

        if ( LPE.KeyBoardRight() )
            right = true;

        if ( LPE.KeyBoardLeft() )
            right = false;           

        if ( right )
            LPE.DisableFlag("INVX");
        else
            LPE.EnableFlag("INVX");
   
        //Personaje
        LPE.DrawAnim(300,260,"RUN");
       
        //Pintamos el arma
        LPE.GetMousePosition(&x,&y);
        angle = atan2( (double)(y - 230), (double)( 290 - x) ) * 180/PI + 180;
        angle %= 360;
        LPE.DrawCenterRotate(290,230,angle,"PLAYER",3);

        //Cuando hemos acabado de pintar lo que queremos tener girado, desactivamos los flips de x
        LPE.DisableFlag("INVX");

        //Pintado de textos
        LPE.DrawText("SYSTEM",200,350,"ANIMACIONES 2D");
    }

Si, LPE viene de LordPakus Engine , es que soy de un original que espanta ... :D

Alguna sugerencia o duda más? algo que creais que se puede mejorar o sencillamente que no entendeis??  Si me la haceis llegar os prometo haceros un capitulo respondiendola.

Nos vemos
LordPakusBlog

Entradas populares