viernes, 1 de julio de 2011

PINGPONG v 1.00

Hola a todos...

Un poco más tarde de lo que yo querría os subo la primera versión del primer cutre juego hecho en mi motor.



Como podeis ver es un ping-pong y el código propiamente de juego es bastante ridiculo.

PlayState.h:
//ARCHIVO DE JUEGO

#ifndef __PlayState__
#define __PlayState__

#include "MyGL.h"
#include <cstdlib>
#include <stdio.h>

static int xbola  = 300 , ybola  = 100;
static int xvel   = 1    , yvel   = 1;
static int xpala1 = 50  , ypala1 = 100;
static int xpala2 = 540 , ypala2 = 100;
static int point1 =   0 , point2 = 0;

class PlayState
    : public State
{
public:
    PlayState() {}

public:

    void enter()
    {
    }

    void leave()
    {
    }
   
    bool CollideBox(int x1i, int y1i, int x1f, int y1f , int x2i, int y2i, int x2f, int y2f )
    {
        if( ( (x1i > x2i) && (x1i < x2f) ) && ( (y1i > y2i) && (y1i < y2f) ) )
            return true;

        if( ( (x1f > x2i) && (x1f < x2f) ) && ( (y1f > y2i) && (y1f < y2f) ) )
            return true;

        return false;
    }

    void update()
    {
        //Lectura del teclado
        if( Core::singleton().KeyBoardUp() )
            ypala1++;

        if ( Core::singleton().KeyBoardDown() )
            ypala1--;

        //Cálculo de la IA
        if(ybola > ypala2)
            ypala2+= (rand()%4-1);

        if(ybola < ypala2)
            ypala2-=(rand()%4-1);

        //Calculo del rebote de la bola
        xbola += xvel;
        ybola += yvel;

        if(xbola > (640-32))
        {
            xbola = 320;
            xvel = -xvel;
            point1++;
        }
       
        if(xbola < 0)
        {
            xbola = 320;
            xvel = -xvel;
            point2++;
        }
       
        if(ybola > (480-32))
        {
            ybola = (479-32);
            yvel = -yvel;
        }
       
        if(ybola < 0)
        {
            ybola = 1;
            yvel = -yvel;
        }

        //Calculo de colisiones pala-bola
        if ( CollideBox( xbola  , ybola , xbola + 32  , ybola +32 ,  
                         xpala1+20 , ypala1 , xpala1 + 40 , ypala1 +64 ) )
        {
            Core::singleton().PlaySound("SOUND_BOLA");
            xbola = xpala1 + 40;
            xvel = -xvel;
        }
       
        if ( CollideBox( xbola  , ybola , xbola + 32  , ybola +32 ,  
                         xpala2+20 , ypala2 , xpala2 + 40 , ypala2 +64 ) )
        {
            Core::singleton().PlaySound("SOUND_BOLA");
            xbola = xpala2 - 30;
            xvel = -xvel;
        }
    }

    void draw ()
    {
        char cad[32];

        //Pintado de elementos gráficos del juego
        Core::singleton().DrawSprite(xbola,ybola,"BOLA");
        Core::singleton().DrawSprite(xpala1,ypala1,"PALA");
        Core::singleton().DrawSprite(xpala2,ypala2,"PALA");

        //Pintado de textos
        sprintf(cad,"%d",point1);
        Core::singleton().DrawText(100,400,cad);

        sprintf(cad,"%d",point2);
        Core::singleton().DrawText(400,400,cad);
    }
};

#endif // __PlayState__

En la sección de descargas teneis el codigo y el ejecutable: http://www.megaupload.com/?d=D9OYY04C

En próximos capitulos iré proponiendo mejoras sobre el juego en base a las mejoras del game engine. Si teneis propuestas no dudeis en hacermelas llegar.


Nos vemos

2 comentarios :

  1. Respuestas
    1. He hecho unos cuantos, PakEngine es uno de ellos: http://lordpakus.blogspot.com.es/p/pakengine.html

      Eliminar

Entradas populares