› Foros › Multiplataforma › Desarrollo
Nubes
ms0:/media/fondo.bmp
Cielo
ms0:/media/fondo2.bmp
batalla
ms0:/media/fondo3.bmp
relajante
ms0:/media/sonido2.at3
sam
ms0:/media/sonido.at3
santhy
2
prog
ms0:/media/pers1.bmp
feliz
ms0:/media/pers2.bmp
saulot
2
PSP
ms0:/media/pers5.bmp
cansado
ms0:/media/pers3.bmp
Nubes
sam
santhy
Izquierda
prog
asdasd
saulot
Izquierda
PSP
asd
Cielo
santhy
Central
feliz
asdasd
saulot
Invisible
cansado
asd
relajante
santhy
Central
feliz
asdasd
Nubes
santhy
Izquierda
prog
asdasd
sam
santhy
Izquierda
prog
asdasd
saulot
Invisible
cansado
asd
void prepararGuion(char *fichero){
animacion * ani;
std::fstream f;
char aux[4098];
char * nombre;
char *nombref;
char *imagenf;
char * posicion;
char * dialogo;
char *rutaAnimacion;
char *nombreanimacion;
char aux2[2];
entradaGuion *eg;
fondod * fondo;
sonidof* snd2;
sprintf(aux2,"");
personaje * persona;
int nanimaciones;
f.open(fichero,std::fstream::in);
f.getline(aux,1024,'\n');
while(strcmp(aux,aux2)!=0){
nombref=new char[1024];
strcpy(nombref,aux);
imagenf=new char[1024];
f.getline(aux,1024,'\n');
strcpy(imagenf,aux);
f.getline(aux,1024,'\n');
fondo=new fondod(nombref,imagenf);
fondos.push_back(fondo);
}
f.getline(aux,1024,'\n');
while(strcmp(aux,aux2)!=0){
nombref=new char[1024];
strcpy(nombref,aux);
imagenf=new char[1024];
f.getline(aux,1024,'\n');
strcpy(imagenf,aux);
f.getline(aux,1024,'\n');
snd2=new sonidof(nombref,imagenf);
sonidos.push_back(snd2);
}
f.getline(aux,1024,'\n');
while (strcmp(aux,aux2)!=0){
nombre=new char[1024];
strcpy(nombre,aux);
persona=new personaje(nombre);
f.getline(aux,1024,'\n');
nanimaciones= atoi(aux);
for(int s=0;s<nanimaciones;s++){
f.getline(aux,1024,'\n');
nombreanimacion=new char[1024];
strcpy(nombreanimacion,aux);
f.getline(aux,1024,'\n');
rutaAnimacion=new char[1024];
strcpy(rutaAnimacion,aux);
ani=new animacion(nombreanimacion,rutaAnimacion);
persona->animaciones.push_back(ani);
}
personas.push_back(persona);
f.getline(aux,1024,'\n');
}
f.getline(aux,1024,'\n');
while(strcmp(aux,aux2)!=0){
int cambiarfondo=buscarFondo(aux);
int cambiarsonido=buscarSonido(aux);
if(buscarPersona(aux)>=0 && cambiarfondo<0 && cambiarsonido<0){
nombre = new char[1024];
strcpy(nombre, aux);
f.getline(aux,1024,'\n');
posicion=new char[1024];
strcpy(posicion,aux);
f.getline(aux,1024,'\n');
nombreanimacion=new char[1024];
strcpy(nombreanimacion,aux);
f.getline(aux,4098,'\n');
dialogo=new char[4098];
strcpy(dialogo,aux);
eg= new entradaGuion(nombre,nombreanimacion,dialogo,posicion);
guion.push_back(eg);
}
if(cambiarfondo>=0){
f.getline(aux,1024,'\n');
cambiarsonido=buscarSonido(aux);
if(cambiarsonido<0){
nombre = new char[1024];
strcpy(nombre, aux);
f.getline(aux,1024,'\n');
posicion=new char[1024];
strcpy(posicion,aux);
f.getline(aux,1024,'\n');
nombreanimacion=new char[1024];
strcpy(nombreanimacion,aux);
f.getline(aux,4098,'\n');
dialogo=new char[4098];
strcpy(dialogo,aux);
eg= new entradaGuion(nombre,nombreanimacion,dialogo,posicion);
eg->fondo=cambiarfondo;
guion.push_back(eg); //si lo pongo peta.. mágia?
}
else{
f.getline(aux,1024,'\n');
nombre = new char[1024];
strcpy(nombre, aux);
f.getline(aux,1024,'\n');
posicion=new char[1024];
strcpy(posicion,aux);
f.getline(aux,1024,'\n');
nombreanimacion=new char[1024];
strcpy(nombreanimacion,aux);
f.getline(aux,4098,'\n');
dialogo=new char[4098];
strcpy(dialogo,aux);
eg= new entradaGuion(nombre,nombreanimacion,dialogo,posicion);
eg->fondo=cambiarfondo;
eg->snd=cambiarsonido;
guion.push_back(eg);
}
}
else{
if(buscarSonido(aux)>=0){
f.getline(aux,1024,'\n');
nombre = new char[1024];
strcpy(nombre, aux);
f.getline(aux,1024,'\n');
posicion=new char[1024];
strcpy(posicion,aux);
f.getline(aux,1024,'\n');
nombreanimacion=new char[1024];
strcpy(nombreanimacion,aux);
f.getline(aux,4098,'\n');
dialogo=new char[4098];
strcpy(dialogo,aux);
eg= new entradaGuion(nombre,nombreanimacion,dialogo,posicion);
eg->snd=cambiarsonido;
guion.push_back(eg);
}
}
f.getline(aux,1024,'\n');
}
}
char aux[4098]; //Si usas cuadrados de 2 deberia ser 4096
PauSaDRaMaTiCa escribió:Un consejo, todo este codigo lo puedes reducir a mucho menos con muy poco esfuerzo, lo cual te facilita depurarlo.
nombre = new char[1024]; lo tienes repetido hasta la saciedadchar aux[4098]; //Si usas cuadrados de 2 deberia ser 4096
imagenf= new char[1024];
nombref= new char[1024];
nombreanimacion= new char[1024];
rutaAnimacion= new char[1024];
nombre=new char[1024];
posicion=new char[1024];
dialogo=new char [4098];
yo pondria esto en el inicio de la funcion y asi no estaria todo el rato ni escribiendo esa linea, ni la maquina redimensionandome cada vez el array. Prueba a cambiar ese valor 4098 por su correspondiente 4096 a ver si asi no tienes fallos, otra cosa yo ys no se decirte
f.getline(aux,1024,'\n');
while(strcmp(aux,aux2)!=0){
int cambiarfondo=buscarFondo(aux);
int cambiarsonido=buscarSonido(aux);
if (cambiarfondo>=0){
f.getline(aux,1024,'\n');
cambiarsonido=buscarSonido(aux);
}
if( cambiarsonido>=0){
f.getline(aux,1024,'\n');
}
nombre = new char[1024];
strcpy(nombre, aux);
f.getline(aux,1024,'\n');
posicion=new char[1024];
strcpy(posicion,aux);
f.getline(aux,1024,'\n');
nombreanimacion=new char[1024];
strcpy(nombreanimacion,aux);
f.getline(aux,4098,'\n');
dialogo=new char[4098];
strcpy(dialogo,aux);
eg= new entradaGuion(nombre,nombreanimacion,dialogo,posicion);
eg->fondo=cambiarfondo;
eg->snd=cambiarsonido;
guion.push_back(eg);
}