saltos de linea en string

Started by lou, January 29, 2010, 02:19:27 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

lou

Buenas!

Mi duda es si.. existen saltos de linea en Bennu? es decir, algo asi:
string x = "hola, que tal? \r\n yo bien, y tu? \r\n bien";
Lo que resultaría en:
hola, que tal?
yo bien, y tu?
bien


Existe algo parecido en bennu?
Gracias!

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

Las funciones "básicas" de escritura de textos en Bennu (write y write_var) se encargan de escribir los caracteres a partir de un pixel y con cierta alineación, pero siempre dentro de la misma línea.

En su día hice una función que hacía división de palabras activa, a partir de cierto punto se encargaba de preparar otro write que continuaba escribiendo el texto N píxeles debajo de la primera linea, el resultado no estaba nada mal... Pero el algoritmo no era 100% correcto y para palabras demasiado largas daba problemas, es un proyecto que no terminé porque no tenía ningún proyecto en el que darle cabida...

En cualquier caso, lo hice en unas horas, la idea es sencilla, pasas la string a una FUNCTION que tiene un vector de strings donde trocear el texto y luego se encarga de escribirlo. También tenía un vector de IDs de los textos escritos, para poder borrarlos luego.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

lou

Mi idea era la siguiente:
en el juego de pokemon, por ejemplo en la pokedex, hago 6 write_var para listar los ataques, y otros 4 o 5 para el resto de datos. Era por usar una sola string con saltos de linea para usar un solo write_var. El problema de string alloc que me salta no se si tendrá que ver con que hago la de dios de write_var, por eso queria reducirlos.

Gracias por la info!

DCelso

creo que en tu caso te vendría mejor usar write a secas, tienes que guardar un identificador por cada write que hagas, y justo cuando quieras que no se vea tienes que hacer un delete_text por cada identificador que tengas.
Asi deberías de evitar cualquier desbordamiento de textos.
Puedes usar un vector estático para guardar los identificadores siempre y cuando conozcas el masimo de textos que vas a mostrar en pantalla o ponga sun numero muy grande como 100 o 1000
algo como

int id_textos[1000];
...
id_textos[1] = write(0,10,10,0,"hola");
id_textos[2] =write(0,10,40,0,"adios");
...
while(!key(_esc)) frame; end
delete_text(id_textos[1]):
delete_text(id_textos[2]);


windgate se refería a que el se ha hecho una función para automatizar esto mismo que te comento.
que puedes hacerte tu una propia en la que pases el texto como dices tu con \n (ejemplo "hola\nadios"), luego usar split para sacar varios strings usando como separado "\n" y hacer un write por cada texto del split.
sería algo como  create tu propia funcion mi_write(font, x_pos,y_pos, text) que encapsule varios write_vars y devuelva el vector de id_s para poder luego hacer un mi_delete_text(vector_de_ids) y poder eliminarlos con varios delete_text.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/