Hokutoy
24/02/2006, 23:18
Buenas!
Estoy haciendo un juego tipo QUIZ o TRIVIAL para Gp2x en FENIX y me encuentro el siguiente problema.
Cuando ejecuto el juego funciona muy bien pero al poco rato me salta al menú principal sin motivo aparente.
Después de debugearlo mucho, cambiando varias veces el codigo, de darle la lata a Puck para ver si era cosa del port (que va a ser que no porque en Gp32 pasa lo mismo), y de hacer mil pruebas he llegado a la conclusión de que lo que hace fallar al juego es el sigüiente Snippet de Racemaniac que he incluido en mi juego para poder leer las "preguntas" de mi juego desde un .txt externo y así cualquiera podrá incluir mas preguntas o editarlas a su gusto.
El problema es mi desconocimiento sobre como actua este codigo (sorry mi conocimiento de Fenix es limitado) por lo que no se si el uso reiterado de la funcion readfile("newdoc.txt"); puede llenar la memoria de alguna manera haciendo que el juego pete en la GP2x (En el Pc no peta). Alguna idea?
Alguien inspirado me puede decir de otra forma para conseguir leer y representar en pantalla un texto que se encuentre en un .txt adjunto?
Gracias!
Os dejo en codigo + ejemplo del Readfile:
program textreader;
global
power[4]=1,256,256*256,256*256*256;
textfile[1000];//we'll read up to 4000 chars
string line[100];//up to 100 lines, should be enough?
private
i;
begin
readfile("newdoc.txt");
for(i=0;i<10;i++)
write_string(0,160,5+i*10,4,&line[i]);
end
loop
frame;
end
end;
function readfile(string filename)
private
string chars[100];//up to 98 chars on a line (last two are for end of line)
lasttwo[2];
lastj;
j;
i;
begin
load(filename,textfile);
while(j<4000)
lasttwo[0]= (textfile[j/4]/power[j%4])%256;
chars[j-lastj]=chr(lasttwo[0]);
j++;
lasttwo[1]= (textfile[j/4]/power[j%4])%256;
chars[j-lastj]=chr(lasttwo[1]);
while((lasttwo[1]!=10 or lasttwo[0]!=13)and j<4000 and j-lastj<100);
j++;
lasttwo[0]=lasttwo[1];
lasttwo[1]= (textfile[j/4]/power[j%4])%256;
chars[j-lastj]=chr(lasttwo[1]);
end;
j++;
if(j-lastj==101);
return;
end
line[i++]=join("",&chars,j-lastj-2);
lastj=j;
end
return;
end;
Estoy haciendo un juego tipo QUIZ o TRIVIAL para Gp2x en FENIX y me encuentro el siguiente problema.
Cuando ejecuto el juego funciona muy bien pero al poco rato me salta al menú principal sin motivo aparente.
Después de debugearlo mucho, cambiando varias veces el codigo, de darle la lata a Puck para ver si era cosa del port (que va a ser que no porque en Gp32 pasa lo mismo), y de hacer mil pruebas he llegado a la conclusión de que lo que hace fallar al juego es el sigüiente Snippet de Racemaniac que he incluido en mi juego para poder leer las "preguntas" de mi juego desde un .txt externo y así cualquiera podrá incluir mas preguntas o editarlas a su gusto.
El problema es mi desconocimiento sobre como actua este codigo (sorry mi conocimiento de Fenix es limitado) por lo que no se si el uso reiterado de la funcion readfile("newdoc.txt"); puede llenar la memoria de alguna manera haciendo que el juego pete en la GP2x (En el Pc no peta). Alguna idea?
Alguien inspirado me puede decir de otra forma para conseguir leer y representar en pantalla un texto que se encuentre en un .txt adjunto?
Gracias!
Os dejo en codigo + ejemplo del Readfile:
program textreader;
global
power[4]=1,256,256*256,256*256*256;
textfile[1000];//we'll read up to 4000 chars
string line[100];//up to 100 lines, should be enough?
private
i;
begin
readfile("newdoc.txt");
for(i=0;i<10;i++)
write_string(0,160,5+i*10,4,&line[i]);
end
loop
frame;
end
end;
function readfile(string filename)
private
string chars[100];//up to 98 chars on a line (last two are for end of line)
lasttwo[2];
lastj;
j;
i;
begin
load(filename,textfile);
while(j<4000)
lasttwo[0]= (textfile[j/4]/power[j%4])%256;
chars[j-lastj]=chr(lasttwo[0]);
j++;
lasttwo[1]= (textfile[j/4]/power[j%4])%256;
chars[j-lastj]=chr(lasttwo[1]);
while((lasttwo[1]!=10 or lasttwo[0]!=13)and j<4000 and j-lastj<100);
j++;
lasttwo[0]=lasttwo[1];
lasttwo[1]= (textfile[j/4]/power[j%4])%256;
chars[j-lastj]=chr(lasttwo[1]);
end;
j++;
if(j-lastj==101);
return;
end
line[i++]=join("",&chars,j-lastj-2);
lastj=j;
end
return;
end;