Ok, te pongo el main entero hasta la llamada a la función, se basa en un switch case, lo tipico empiezas en la pantalla de elección de idioma, luego del tipo juego y demás, el problema ocurre cuando entramos en el caso de "juego_en_solitario" que está la función esta GetInfo() que es llamarla y petar, sin embargo como puedes ver antes que esa ejecuta bastantes funciones más sin ningún problema...¿Puede ser algún problema de definición de variables?, la verdad es que es bastante difícil explicar el problema porque es muy raro
, espero que con ésto puedas ver algo más....
#include "Funciones.h"
#include "Idiomas.h"
#include "Preguntas.h"
#include <PA9.h> // Include para PA_Lib
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <vector>
#include <list>
#include <cstdlib>
#include "dibio.h"
using namespace std;
int main()
{
int tamList;
int leng = 0;
bool start = false;
int estado = ESTADO_ELEGIR_IDIOMA;
char* idioma = NULL;
int id = 0;
int tam = 0;
int numNiveles = 0;
//int nivel;
int contadorNivel = 0;
bool correcto = false;
bool todasContestadas = false;
bool iniciado = false;
bool pulsado = false;//control
int numRespondidas = 0;
pregunta sigPreg;
idiomas structIdioma;
vector<pregunta> listaPreguntas;
vector<control> listaControl;
pregunta *listaNivel;
time_t hora = 0;
int i;
/*unsigned seed = (unsigned)time(0);
seed ++;*/
PA_Init(); // Inicializa PA_Lib
PA_InitVBL(); // Inicializa una VBL estándar
//srand(time(NULL));
PA_InitRand();
hora = time(NULL);
PA_InitText(1, 0);
PA_OutputText(1,9,10,"aleatorio: %d",hora);
// bucle infinito para mantener el programa funcionando
while (1)
{
switch (estado)
{
case ESTADO_ELEGIR_IDIOMA:
LimpiarPantallaNormal();
estado = ElegirIdioma(&idioma);
if (strcmp(idioma,"ingles") == 0)
{
CargarIdiomaIngles(structIdioma);
}else if (strcmp(idioma,"castellano") == 0)
{
CargarIdiomaCastellano(structIdioma);
}else
{
CargarIdiomaEuskara(structIdioma);
}
leng = EstablecerIdioma(idioma); //ALAIN
if (leng != 0)
{
PA_InitText(1, 0);
PA_OutputSimpleText(1,15,10,"error");
PA_InitText(1,1);
PA_OutputText(1,20,20,"%d",leng);
}
while (start == false)
{
PA_InitText(1, 2);
PA_OutputText(1,1,2,"%s",structIdioma.inicio);
if (Pad.Newpress.Start)
{
LimpiarPantallaNormal();
start = true;
}
PA_WaitForVBL();
}
start = false;
break;
case ESTADO_INICIO:
//este será el menu de juego, aquí se podrá meter más funcionalidad en el futuro.
estado = PantallaInicio(idioma);
break;
case ESTADO_ELEGIR_TIPO_JUEGO:
LimpiarPantallaNormal();
estado = ElegirTipoJuego(structIdioma.tipoJuego);
break;
case ESTADO_JUEGO_SOLITARIO: //JUEGO EN SOLITARIO;
LimpiarPantallaTactil();
LimpiarPantallaNormal();
SecuenciaInicio(structIdioma);
if (iniciado == false)
{
GetInfo (&numNiveles); //devuelve el número de niveles diferentes existentes en la BD (AQUI SE CUELGA)
iniciado = true;
}
...
}
return 0;
}
}
Muchas gracias de antemano!!