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
cual es tu motor??
ResponderEliminarHe hecho unos cuantos, PakEngine es uno de ellos: http://lordpakus.blogspot.com.es/p/pakengine.html
Eliminar