PDA

Ver la versión completa : [Fenix] Write text to textarea



Aiken
16/11/2009, 21:49
hola chicos,

quiero escribir un texto en pantalla (buen realmente lo quiero escribir en un map) y me gustaria saber si hay alguna funcion o metodo de forma que yo pueda definir un area (map) y el texto y automaticamente me meta saltos de linea cuando corresponda para no salirse del area correspondiente.

para escribir en un mapa estoy usando write_in_map() pero no tiene esa opcion, creo :(

estoy usando fenix 092a, si lo se, me tengo que pasar a bennu, si sabeis de algun metodo estandar que sirva para ambos mejor.

Aiken

GameMaster
16/11/2009, 21:55
Hace años vi una función para escribir textos que utilizaba imagenes, o sea, cada letra era un map del fpg, y escribias de forma sencilla como si fuera texto.

Te recomiendo que busques por tutoriales o foros antiguos o si alguien tiene esto a mano.

Edito, bueno veo que no es esto exactamente que pides :)

Quieres que lo pueda escribir el jugador en tiempo real y que salte para la linea de abajo ?
Siempre puedes poner la condicion de que si esta en determinada posición x, se pase a una x-a, y-b por ejemplo.

Aiken
16/11/2009, 21:58
Hace años vi una función para escribir textos que utilizaba imagenes, o sea, cada letra era un map del fpg, y escribias de forma sencilla como si fuera texto.
Te recomiendo que busques por tutoriales o foros antiguos o si alguien tiene esto a mano.

era por si hay algo estandar oficial.

sin ser oficial, supongo que puedo coger palabra a palabra e ir comprobando y sumando el text_width() mientras que sea menor que el ancho del area o algo asi, pero era por si habia alguna funcion o flag magico :)

Aiken

GameMaster
16/11/2009, 22:02
Te entiendo, pero no tengo ni idea, nunca hice nada similar. Seguramente los sabios ya tardaran poco en aparecer por aqui :)

Drumpi
17/11/2009, 02:48
Los sabios no se, pero yo ando desvelado.
No, no existe una función mágica que haga los saltos de línea, como tampoco la posibilidad de escribir el mismo texto en líneas separadas, eso te toca hacerlo a ti.

Es posible que cuando se actualice el módulo de textos de bennu se añada algo (yo propuse el poder escribir en vertical :D), pero de momento hay que terminar la versión 1.0, y para ello hay que depurar bugs a tope.

Y que no te obliguen a pasarte a Bennu, trabaja con lo que más cómodo estés. Bennu cuesta un poco al principio, pero se le coge el tranquillo rápido y empiezas a notar mejoras,

Hokutoy
17/11/2009, 09:16
Mirate este enlace:
http://fenixonfire.gp32x.de/html/start.html

Mira la seccion de sources y la de snippets. La rutina del Qwrite (la de Mogle) va muy bien.

Adios

Aiken
17/11/2009, 09:30
gracias chicos, de momento me lo he currao yo, ya que tampoco necesitaba nada muy complicado.

hokutoy, me agrego FenixOnFire a favoritos que no lo conocia ;)
Aiken

Hokutoy
17/11/2009, 09:36
Prueba tambien este codigo de Racemaniac:
i made some code to read a txt file, line per line and storing every line in a seperate string :)
have a look:
the current program will show the first 10 lines it finds
and every line has to be ended with a return (or the program won't find it :) , so if it doesn't see the last line, you know why :P )
this is tested with txt's made with notepad :)


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;

Es bastante util para leer textos desde un .txt externo. Para acabar las frases usa Return o no lo entendera. Puede ser una solucion para tu problema de controlar el largo de las frases.

Si no recuerdo mal, tengo un codigo mio viejo de un juego tipo Quiz donde mezcle este programa para leer las preguntas desde un .txt y las representaba en pantalla mediante el Qwrite de Moogle/Quiest.

A ver si lo recupero porque la verdad es que era gracioso.

Saludos!

masteries
17/11/2009, 14:20
Yo también me he apuntado Fenixonfire en los marcadores.

Lo del Bennu, hasta que no rule en GP2X, que lo estoy intentando compilar pero no me encuentra los .h, al menos algunos...

Drumpi
17/11/2009, 18:00
¿Leer lineas de los txt? chupado:

fgets(id_fichero);

os devuelve la linea de texto hasta el primer fin de linea que encuentre (chr(10)) y en el formato windows también lee el retorno de carro (chr(13)) y lo ignora.
Pero lo de recortar la linea al espacio eso ya no lo hace, y menos si quieres que lo haga en un espacio (y como quieras que además separe sílabas y ponga el guión...). De hecho, es una de las mejoras pendientes de Venturer.

Suerte, Masteries, yo te apoyo y lo sabes ;)