Problemas con SDL_Color

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

Problemas con SDL_Color

Notapor sofoke » Mié Mar 04, 2009 6:19 am

He estado desarrollando una pequeña libreria...
Me ha surgido un extraño error al usar SDL_Color variables para el color dadas pro dicha estructura....
Tengo yo una estructura mas o menos asi:
Código: Seleccionar todo
struct Strc_contador{
   SDL_Color bgcolor, fgcolor;
};

Y un apuntador a dicha estructra asi:
Código: Seleccionar todo
Strc_contador* valores_contador;

reservando memoria de la siguiente manera:
Código: Seleccionar todo
valores_contador = new Strc_contador;

y el problema viene cuando trato de asignarle un valor a fgcolor extrañamente hago lo mismo con gbcolor y no da error alguno...Ahora le intento dar los valores de la siguiente manera:
Tengo un archivo de texto plano con los valores de la siguiente manera:
Código: Seleccionar todo
100 100 100
100 100 100

Y para leer el archivo tengo una funcion que hace esto:
Código: Seleccionar todo
   FILE *file_contador;
   file_contador = fopen( PATHCONTADOR, "r" );
   if( file_contador == NULL ){
      printf( "no se pudo abrir el archivo");
                exit(0);
   }else{
      fscanf( file_contador, "%d", &valores_contador->bgcolor.r );
      fscanf( file_contador, "%d", &valores_contador->bgcolor.g );
      fscanf( file_contador, "%d", &valores_contador->bgcolor.b );
      fscanf( file_contador, "%d", &valores_contador->fgcolor.r );
      fscanf( file_contador, "%d", &valores_contador->fgcolor.g );
      fscanf( file_contador, "%d", &valores_contador->fgcolor.b );
      fclose( file_contador );
   }

Y solo me da error con las dos ultimas lineas:
Código: Seleccionar todo
fscanf( file_contador, "%d", &valores_contador->fgcolor.g );
      fscanf( file_contador, "%d", &valores_contador->fgcolor.b );

si se las quito corre correctamente....
Espero no haberme exedido...
Nota compilo con g++-4.3 uso debian lenny como sistema...
...cuando lo popular no es suficiente...
Gnu-Linux-y-Más
Avatar de Usuario
sofoke
 
Mensajes: 102
Registrado: Jue May 24, 2007 8:10 pm
Ubicación: México

Notapor Dokan » Mié Mar 04, 2009 11:29 am

¿Has probado a pasarle los valores que hay en el archivo de texto plano todos en la misma linea y separados por espacios?
No entiendo mucho pero el salto de línea puede estar creando problemas.
Avatar de Usuario
Dokan
 
Mensajes: 143
Registrado: Lun Dic 03, 2007 10:40 pm

Notapor sofoke » Mié Mar 04, 2009 10:37 pm

Si te refieres a algo como esto:
Código: Seleccionar todo
100 100 100 100 100 100

Si ya lo habia intentado y sigue igual....
...cuando lo popular no es suficiente...
Gnu-Linux-y-Más
Avatar de Usuario
sofoke
 
Mensajes: 102
Registrado: Jue May 24, 2007 8:10 pm
Ubicación: México

Notapor sofoke » Jue Mar 05, 2009 12:04 am

Bueno ya encontre como resolverlo y espero sea permanente y no una respuesta simple y sencilla...
Lo que hice fue crear la estructura de la siguiente manera:
Código: Seleccionar todo
struct Strc_contador{
   SDL_Color *bgcolor, *fgcolor;
};

apuntador a estructura
Código: Seleccionar todo
Strc_contador* valores_contador;

y reserve la memoria asi:
Código: Seleccionar todo
valores_contador = new Strc_contador;
valores_contador->gbcolor = new SDL_Color;
valores_contador->fbcolor = new SDL_Color;

y en la funcion que lee el archivo me quedo asi:
Código: Seleccionar todo
   FILE *file_contador;
   file_contador = fopen( PATHCONTADOR, "r" );
   if( file_contador == NULL ){
      printf( "no se pudo abrir el archivo");
                exit(0);
   }else{
      fscanf( file_contador, "%d", &valores_contador->bgcolor->r );
      fscanf( file_contador, "%d", &valores_contador->bgcolor->g );
      fscanf( file_contador, "%d", &valores_contador->bgcolor->b );
      fscanf( file_contador, "%d", &valores_contador->fgcolor->r );
      fscanf( file_contador, "%d", &valores_contador->fgcolor->g );
      fscanf( file_contador, "%d", &valores_contador->fgcolor->b );
      fclose( file_contador );
   }

Y con esto ahora no me tira ese fallo de segmentacion...
Ahora mi duda es la siguiente:
Podria mi aplicacion con estas modificaciones correr correctamente en otras distros y SO. ?
...cuando lo popular no es suficiente...
Gnu-Linux-y-Más
Avatar de Usuario
sofoke
 
Mensajes: 102
Registrado: Jue May 24, 2007 8:10 pm
Ubicación: México


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

cron