domingo, 3 de julio de 2011

GameEngine: Capitulo 16.Mejorando el FontManager (I). Fuentes Bitmapeadas.

Hola a todos

Bienvenidos a un nuevo capitulo de como crear tu propio game engine desde 0...

El capítulo de hoy tratará sobre las fuentes bitmapeadas. Hasta ahora habíamos pintado textos renderizados y cumplen su función correctamente pero cuando queremos hacer un juego nos interesa tener fuentes más personalizadas y ambientadas en nuestro proyecto.

Las fuentes bitmapeadas las he enfocado como un caso concreto de gráficos empaquetados, de forma que los cambios en el código son menores a los que en un principio cabria esperar. La carga de la fuente ya está implementada gracias a los gráficos empaquetados así que solo queda el pintado como tal, modificando las funcionalidades del modulo FontManager.

El código modificado es poco , como se puede ver:

Dentro del FontManager:
void FontManager::Print(char font[],int x , int y, char text[])
{
int i, w, width = 0 ;

if( font == "SYSTEM" )
glQuickText::printfAt((double)x,(double)y, 0.0f ,1.0f , text );
else
{
//Fuente bitmapeada
width = 0;
w = TextureManager::singleton().GetWidth(font,1);
//cout << "Ancho de caracter: " << w << "\n";

for ( i = 0 ; i < strlen (text); ++i)
{
if( text[i] != ' ' )
Core::singleton().DrawSprite(x+width ,y,font,text[i]+1);
width += w;
}
}
}

Dentro del código del juego:
void draw ()
{
char cad[32];

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

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

sprintf(cad,"%d",point2);
Core::singleton().DrawText("SYSTEM",400,400,cad);
Core::singleton().DrawText("FONT",250,450,"PING PONG");
}

El gráfico usado como fuente bitmapeada es el siguiente:
 

Y como queda la pantalla de juego es la siguiente imagen:

En esta ocasión no he hecho video ya que seria identico al video anterior.

Si quereis bajaros el código podeis hacerlo desde la zona de descargas.(capitulo 16)
Espero que hayaís aprendido y lo hagaís pasado bien.

LordPakusBlog
Nos vemos.

0 comentarios :

Publicar un comentario

Entradas populares