No me funcionan los metodos de imagen y texto

Tratamos sobre el manejo de APIs frecuentemente utilizadas en el desarrollo de videojuegos, como SDL, pygame o SFML.

No me funcionan los metodos de imagen y texto

Notapor astut » Vie Mar 16, 2007 9:30 am

Hola a todos, pues ese es mi problema, he hecho 3 clases una para cada proposito, imagen para imagenes (sdl image), texto para textos (sdl ttf) y controlador para controlar diferentes cosas pero eso ya es aparte, las que no me funcionan son imagen y texto, aqui les dejo el main que es donde las utilizo:
Código: Seleccionar todo
#include "Sdl/SDL.h"
#include "Sdl/SDL_image.h"
#include "clases/controlador/controlador.h"
#include "clases/imagen/imagen.h"
#include "clases/texto/texto.h"
//variables//
bool bucle= true;
SDL_Surface* video;
SDL_Event evento;
//instancias//
CControlador controlador;
CImagen imagen;
CTexto texto("fuentes/courier.ttf",12);
//programa//
int main(int argc, char **argv)
{
SDL_Init(SDL_INIT_VIDEO);
TTF_Init();
imagen.Cargar(0,"graficos/Homosapiperro.jpg");
video= SDL_SetVideoMode(800,600,16,SDL_HWSURFACE|SDL_DOUBLEBUF);
while (bucle)
{
  //aqui uso metodos de dibujado para imagen y texto//
  imagen.Dibujar(video,0);
  texto.Dibujar("hola mundo",video,30,40,200,100,50);
  while (SDL_PollEvent(&evento))
  {
   if (evento.type== SDL_KEYDOWN)
   {
    switch (evento.key.keysym.sym)
    {
     case SDLK_ESCAPE:
      bucle= false;
     break;
    }
   }
  }
}
return 0;
}

Aqui imagen.cpp:
Código: Seleccionar todo
#include "imagen.h"
//--CONSTRUCTORES--//
CImagen::CImagen()
{
fotocant= 0; fotoactu= 1; x= 0; y= 0;
}
//--METODOS--//
//Cargar//
void CImagen::Cargar(short delactu, char *directorio)
{
if (delactu== 0)
{
  fotocant++;
  repositorio[fotocant]= IMG_Load(directorio);
}
else
{
  short n;
  for (n= 1;n< fotocant;n++)
  {
   SDL_FreeSurface(repositorio[n]);
  }
  fotocant= 1;
  repositorio[fotocant]= IMG_Load(directorio);
}
}
//Vaciar//
void CImagen::Vaciar()
{
short n= 0;
for (n= 1;n< fotocant;n++)
{
  SDL_FreeSurface(repositorio[n]);
}
fotocant= 0;
}
//Dibujar//
void CImagen::Dibujar(SDL_Surface* lugar, short MtrFtg)
{
SDL_Rect destino;
destino.x= x;
destino.y= y;
if (MtrFtg== 0)
{
  SDL_BlitSurface(repositorio[fotoactu],NULL,lugar,&destino);
  if (fotocant> 1)
  {
   if (fotoactu!= fotocant)
    fotoactu++;
   else
    fotoactu= 1;
  };
}
else
  SDL_BlitSurface(repositorio[MtrFtg],NULL,lugar,&destino);
}

Y aqui texto.cpp:
Código: Seleccionar todo
#include "texto.h"
//--CONSTRUCTORES--//
CTexto::CTexto(const char *directorio,int tamano)
{
fuente= TTF_OpenFont(directorio,tamano);
}
//--METODOS--//
//Dibujar//
void CTexto::Dibujar(const char* ttexto,SDL_Surface* lugar,short x,short y,short fg1,short fg2,short fg3)
{
fgcolor.r= fg1;
fgcolor.g= fg2;
fgcolor.b= fg3;
bgcolor.r= 255;
bgcolor.g= 0;
bgcolor.b= 0;
texto= TTF_RenderText_Shaded(fuente,ttexto,fgcolor,bgcolor);
posicion.x= x;
posicion.y= y;
SDL_BlitSurface(texto,NULL,lugar,&posicion);
}

Los h. estan correctamente en estas dos clases al igual que al cargar la imagen y la fuente, aparte de eso me gustaria colaborar como programador en la comunidad aunque sea principiante, si esto es muy molesto les puedo dejar el enlace al proyecto, muchas gracias ^^
astut
 
Mensajes: 7
Registrado: Vie Mar 16, 2007 9:20 am

Re: No me funcionan los metodos de imagen y texto

Notapor Geo » Vie Mar 16, 2007 1:51 pm

No mencionas los problemas que tienes :P.

Lo que por lo pronto (y checando rápido) recomiendo, es que te asegures de haber cargado las imágenes y la fuente, por ejemplo:

Código: Seleccionar todo
fuente = TTF_OpenFont( directorio, tamanio );
if ( fuente == NULL ) {
  // Aquí el código para manejar el error, p. ej.:
  fprintf( stderr, "Error al cargar fuente: %s\n", SDL_GetError() );
  exit( 1 );
}

Lo mismo para las imágenes.

Suerte,
JJ (Geo).
La imaginación es el límite.
Visita mi blog en inglés o en español.
Geo
 
Mensajes: 244
Registrado: Jue Ago 10, 2006 3:51 am
Ubicación: México

RESPUESTA

Notapor ligo » Vie Mar 16, 2007 9:47 pm

pues pueden ser muchas cosas...

recuerda que C y C++ son muy extrictos... y puedes tener el sgt problema:

tu escribes:
#include<Sdl/SDL_image.h>


prueba con SDL/SDL_image.h

además si trabajas con GNU siempre debes instalar el archivo con la extencion -dev... ya sea con apt-get.

espero que te alla servido

ATTE LIGO
ligo
 
Mensajes: 7
Registrado: Sab Ene 20, 2007 4:54 pm
Ubicación: Los angeles.chile


Volver a Sobre las bibliotecas multimedia

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado