Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: bygdle en Diciembre 09, 2015, 09:44:25 PM

Título: [solucionado]file_text_read_string para TODO el archivo
Publicado por: bygdle en Diciembre 09, 2015, 09:44:25 PM
Sí, puede que el título no diga mucho :-[
Hola, Estoy probando las últimas del sistema de niveles de mi juego. Pero me encontré con un problema que, probablemente es muy tonto.
Primero, los niveles se guardan en archivos.
Segundo, quiero que el GMS abra el archivo de X nivel, copie TODO su contenido y lo almacene en una variable.

Cuando uso la función file_text_read_string me veo en un problema: Sólo copia la primera linea del archivo, por ejemplo, si el nivel es asi:

Nivel:
algo
algo
algo
algo


y uso file_text_read_string, la variable sólo me almacena lo que está en el primer "renglón", (Nivel:). Lo que necesito es que almacene en una sola variable TODO el contenido del archivo. ¿Cómo puedo lograr esto?
Título: Re:file_text_read_string para TODO el archivo
Publicado por: penumbra en Diciembre 09, 2015, 09:48:53 PM
Ciclos:

Mientras no se alcance el fin de archivo (EOF), guardo en una variable cada línea de texto del archivo y me muevo a la siguiente línea. El manual de hecho incluye ejemplos 99% similares a lo que quieres hacer.
Título: Re:file_text_read_string para TODO el archivo
Publicado por: bygdle en Diciembre 09, 2015, 09:53:23 PM
Cita de: penumbra en Diciembre 09, 2015, 09:48:53 PM
Ciclos:

Mientras no se alcance el fin de archivo (EOF), guardo en una variable cada línea de texto del archivo y me muevo a la siguiente línea. El manual de hecho incluye ejemplos 99% similares a lo que quieres hacer.
mmm.....
No entendí. Y no creo encontrar un ejemplo como lo quiero entre miles y miles de ejemplos que trae el manual.
No me vendría mal algo de ayuda más específica...xD
:-[ XD XD
Título: Re:file_text_read_string para TODO el archivo
Publicado por: penumbra en Diciembre 09, 2015, 10:02:30 PM
El manual quizás trae miles y miles de ejemplos, pero no desorganizados, sino acordes a la función que se consulta (por ejemplo file_text_read_string)
http://docs.yoyogames.com/source/dadiospice/002_reference/file%20handling/files/file_text_read_string.html

En fin. Ya vendrán almas más piadosas a auxiliarte.
Título: Re:file_text_read_string para TODO el archivo
Publicado por: jmbs19 en Diciembre 09, 2015, 10:05:10 PM
http://docs.yoyogames.com/source/dadiospice/002_reference/file%20handling/files/file_text_read_string.html

[gml]
i=0;
texto ="";//esto lo agregas para guardar el contenido del archivo
file = file_text_open_read(working_directory + "\archivo.txt");
do //en lugar de usar el while usamos el do while, do <statement> until(<expression>) para poder añadir un valor a texto antes de comprobar
   {
   texto = file_text_read_real(file);//leemos la linea y la guardamos en i
   file_text_readln(file);//saltamos la linea para la proxima lectura
   i=i+1//aumentamos el valor de i
}
until (texto[(i-1)]="")//repetira hasta que encuentre el final del archivo, aqui puedes meter un caracter especial o dejarlo asi.
file_text_close(file);
[/gml]

este es el ejemplo del link que te pase pero adaptado a tu pregunta, el comando file_text_read_real solo lee la una linea, y el comando file_text_readln salta la linea que se leera.

y como dijo penumbra arriba, deberias de buscar los ejemplos que salen en el manual para cada funcion y entenderlos.
Título: Re:file_text_read_string para TODO el archivo
Publicado por: bygdle en Diciembre 09, 2015, 10:18:48 PM
Bueno, bueno... parece que las almas piadosas han venido a auxiliarme... tenías razón, penumbra  XD
Pero hay un problema... la variable texto no está definida como array, y cuando lo pruebo me sale el obvio error. Variable Index out of range
No sé cómo arreglo esto :'(

EDITO: ¿Cuando editaste el código que no me di cuenta???
EDITO 2: Supongo que arreglé ese problema. Pero ahora, al momento de probar el juego, simplemente PUM! se bloquea y deja de funcionar  XD
Título: Re:file_text_read_string para TODO el archivo
Publicado por: penumbra en Diciembre 09, 2015, 10:24:30 PM
solamente concatena las líneas. Al final, todo el texto quedaría guardado en una cadena larga.
[gml]
texto += file_text_read_real(file);
[/gml]
Creo que fue despiste de jmbs, porque al principio la variable está inicializada como una variable simple.
Título: Re:file_text_read_string para TODO el archivo
Publicado por: bygdle en Diciembre 09, 2015, 10:26:26 PM
Gracias, pero cómo compribaría el until?
Cita de: jmbs19 en Diciembre 09, 2015, 10:05:10 PM
[gml]
until (texto[(i-1)]="")//repetira hasta que encuentre el final del archivo, aqui puedes meter un caracter especial o dejarlo asi.
[/gml]
Ya que todo el contenido se almacena en una sola variable, no puedo comprobarlo bien ¿no?
Título: Re:file_text_read_string para TODO el archivo
Publicado por: penumbra en Diciembre 09, 2015, 10:30:46 PM
Dicen que hay una función que devuelve si se ha alcanzado el final del archivo (true) o no (false).  De ser cierto, eso sería mejor para detener la ejecución del ciclo. (http://ildivomx.crearforo.com/images/smiles/Silbando.gif)
Título: Re:file_text_read_string para TODO el archivo
Publicado por: jmbs19 en Diciembre 09, 2015, 10:32:57 PM
Cita de: penumbra en Diciembre 09, 2015, 10:24:30 PM
solamente concatena las líneas. Al final, todo el texto quedaría guardado en una cadena larga.
[gml]
texto += file_text_read_real(file);
[/gml]
Creo que fue despiste de jmbs, porque al principio la variable está inicializada como una variable simple.
error mio ,penumbra, al declarar la variable. sin embargo si lo estoy guardando en un array, para que el:

[gml]until (texto[(i-1)]="")[/gml]

pueda comprobar con la misma variable, sin embargo si lo va a guardar como un string largo seria necesaria una variable temporal que comparar en esa parte.

pd: no conocia esa funcion penumbra, seria util en este tipo de casos, sin embargo se seguiria usando el do while pero comparando el resultado de esa funcion si es true o false
Título: Re:file_text_read_string para TODO el archivo
Publicado por: bygdle en Diciembre 09, 2015, 10:34:47 PM
Cita de: penumbra en Diciembre 09, 2015, 10:30:46 PM
Dicen que hay una función que devuelve si se ha alcanzado el final del archivo (true) o no (false)
Dicen...por ahi...xD Penumbra, eres un troll...xD
Ya la encontré, y logré solucionar el problema, muy sencillo y con un while:
[gml]
f = file_text_open_read("Created_levels/"+string(ID)+".lvl");
while (!file_text_eof(f)) {
      LVL += file_text_read_string(f);
  file_text_readln(f);
}
[/gml]
Gracias por la ayuda :D
Título: Re:[solucionado]file_text_read_string para TODO el archivo
Publicado por: Grewyks en Diciembre 09, 2015, 10:37:58 PM
Niuweb que paso?
Título: Re:[solucionado]file_text_read_string para TODO el archivo
Publicado por: bygdle en Diciembre 09, 2015, 10:39:05 PM
Cita de: Grewyks en Diciembre 09, 2015, 10:37:58 PM
Niuweb que paso?
¿Qué pasó de qué? ???
Título: Re:file_text_read_string para TODO el archivo
Publicado por: penumbra en Diciembre 09, 2015, 10:39:32 PM
Cita de: NiuWeb en Diciembre 09, 2015, 10:34:47 PM
Ya la encontré, y logré solucionar el problema, muy sencillo y con un while:
[gml]
f = file_text_open_read("Created_levels/"+string(ID)+".lvl");
while (!file_text_eof(f)) {
      LVL += file_text_read_string(f);
  file_text_readln(f);
}
[/gml]
Gracias por la ayuda :D
Que es justo lo que enuncié en mi primer mensaje:
Cita de: penumbra en Diciembre 09, 2015, 09:48:53 PM
Mientras no se alcance el fin de archivo (EOF), guardo en una variable cada línea de texto del archivo y me muevo a la siguiente línea.
Eso demuestra que no soy un troll... o ¿sí? [spoiler]
(http://www.sherv.net/cm/emoticons/trollface/devil-troll-smiley-emoticon.png)
[/spoiler]
Título: Re:[solucionado]file_text_read_string para TODO el archivo
Publicado por: bygdle en Diciembre 09, 2015, 10:42:02 PM
Tal vez no... O TAL VEZ SÍ 8)
Nunca me dijiste que ese (EOF) era una función. Pensé que hablabas de cosas extrañas, y no entendí :-[
Título: Re:[solucionado]file_text_read_string para TODO el archivo
Publicado por: Grewyks en Diciembre 09, 2015, 10:43:05 PM
No ves mis mensajes
Título: Re:[solucionado]file_text_read_string para TODO el archivo
Publicado por: bygdle en Diciembre 09, 2015, 10:49:14 PM
???
¿En serio?.... Pensé que tenías una super-solución al tema, o cosas por el estilo. No eso  :-[
Te recomiendo que no escribas en cualquier tema por ahí, igualmente hubiera visto el mensaje en cualquier momento :-\
PD: El tema trata de otra cosa, no de los mensajes...recuérdalo :D