Hola a tod@s.
Estoy intentando hacer una terminal, por lo que hice una función para que me mostrara un texto y me lo dividiera cuando llegara al máximo de la pantalla. El problema es que no lo hace, por lo que hice una copia con depuración:
-- debugAjust() function debugAdjust() local str = "> This is a too large text to prove if it divides when size text will be more larger than width screen." local tmpch local width = 0 local file = io.open("stout", "w+") table.insert(tprint, "") for tmpch in str:gmatch(".") do local line = #tprint if tmpch == "\n" then table.insert(tprint, ""); width = 0; elseif width+screen.textwidth(tmpch, 0.5) >= 480 then table.insert(tprint, tmpch); width = screen.textwidth(tmpch, 0.5); else tprint[line] = tprint[line]..tmpch; width = width+screen.textwidth(tmpch, 0.5) end file:write("char: "..tmpch..", width: "..screen.textwidth(tmpch, 0.5)..", max: "..width..", "..tostring(width+screen.textwidth(tmpch, 0.5) >= 480).."\n") end file:flush() file:close() file = nil end
Y me arroja esto:
char: >, width: 5, max: 5, false char: , width: 3, max: 8, false char: T, width: 7, max: 15, false char: h, width: 6, max: 21, false char: i, width: 2, max: 23, false char: s, width: 5, max: 28, false char: , width: 3, max: 31, false char: i, width: 2, max: 33, false char: s, width: 5, max: 38, false char: , width: 3, max: 41, false char: a, width: 6, max: 47, false char: , width: 3, max: 50, false char: t, width: 4, max: 54, false char: o, width: 6, max: 60, false char: o, width: 6, max: 66, false char: , width: 3, max: 69, false char: l, width: 2, max: 71, false char: a, width: 6, max: 77, false char: r, width: 4, max: 81, false char: g, width: 6, max: 87, false char: e, width: 6, max: 93, false char: , width: 3, max: 96, false char: t, width: 4, max: 100, false char: e, width: 6, max: 106, false char: x, width: 5, max: 111, false char: t, width: 4, max: 115, false char: , width: 3, max: 118, false char: t, width: 4, max: 122, false char: o, width: 6, max: 128, false char: , width: 3, max: 131, false char: p, width: 6, max: 137, false char: r, width: 4, max: 141, false char: o, width: 6, max: 147, false char: v, width: 5, max: 152, false char: e, width: 6, max: 158, false char: , width: 3, max: 161, false char: i, width: 2, max: 163, false char: f, width: 4, max: 167, false char: , width: 3, max: 170, false char: i, width: 2, max: 172, false char: t, width: 4, max: 176, false char: , width: 3, max: 179, false char: d, width: 6, max: 185, false char: i, width: 2, max: 187, false char: v, width: 5, max: 192, false char: i, width: 2, max: 194, false char: d, width: 6, max: 200, false char: e, width: 6, max: 206, false char: s, width: 5, max: 211, false char: , width: 3, max: 214, false char: w, width: 8, max: 222, false char: h, width: 6, max: 228, false char: e, width: 6, max: 234, false char: n, width: 6, max: 240, false char: , width: 3, max: 243, false char: s, width: 5, max: 248, false char: i, width: 2, max: 250, false char: z, width: 5, max: 255, false char: e, width: 6, max: 261, false char: , width: 3, max: 264, false char: t, width: 4, max: 268, false char: e, width: 6, max: 274, false char: x, width: 5, max: 279, false char: t, width: 4, max: 283, false char: , width: 3, max: 286, false char: w, width: 8, max: 294, false char: i, width: 2, max: 296, false char: l, width: 2, max: 298, false char: l, width: 2, max: 300, false char: , width: 3, max: 303, false char: b, width: 6, max: 309, false char: e, width: 6, max: 315, false char: , width: 3, max: 318, false char: m, width: 8, max: 326, false char: o, width: 6, max: 332, false char: r, width: 4, max: 336, false char: e, width: 6, max: 342, false char: , width: 3, max: 345, false char: l, width: 2, max: 347, false char: a, width: 6, max: 353, false char: r, width: 4, max: 357, false char: g, width: 6, max: 363, false char: e, width: 6, max: 369, false char: r, width: 4, max: 373, false char: , width: 3, max: 376, false char: t, width: 4, max: 380, false char: h, width: 6, max: 386, false char: a, width: 6, max: 392, false char: n, width: 6, max: 398, false char: , width: 3, max: 401, false char: w, width: 8, max: 409, false char: i, width: 2, max: 411, false char: d, width: 6, max: 417, false char: t, width: 4, max: 421, false char: h, width: 6, max: 427, false char: , width: 3, max: 430, false char: s, width: 5, max: 435, false char: c, width: 6, max: 441, false char: r, width: 4, max: 445, false char: e, width: 6, max: 451, false char: e, width: 6, max: 457, false char: n, width: 6, max: 463, false char: ., width: 2, max: 465, false
Y si pongo el script total dice que ocupa 496 píxeles.
¿Cual es el problema? ¿En donde fallo?
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
Corregido chapuceramente
Despues de probar por palabras (También ocasionaba el mismo error), lo he corregido tanteando, y aproximadamente entran a 456px de ancho.
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
Raro, con palabras me va bien
Raro, con palabras me va bien a mí (siempre y cuando el tamaño sea >= 0.6).
Ahh
Yo sólo lo probé con 0.5
Cuando usas width =
Cuando usas width = screen.textwidth(tmpch, 0.5) no debería ser width = width+screen.textwidth(tmpch, 0.5)?
EDITO: Olvídalo, creo acabas de encontrar un bug en LuaDEV. Al parecer con tamaños de 0.5 (o menores me imagino) no furula como debería textwidth (pruébalo con 0.6, casi seguro te irá).
pues yo uso el
pues yo uso el screen.textwidth() a tamaño 0.5 y me funciona perfectamente (pero solo con la fuente original, no he probado con fuentes personalizadas)
asi que no tengo idea de porque le falle a nekerafa
Yo hice una pequeña función
Yo hice una pequeña función que acomoda el texto al ancho que le digas (no me basta con el print de LuaDEV), y no me va con 0.5 y la fuente original. Con 0.6 o mayor va bien... a saber xD
Mmm...
Pues ni 0.5 ni 0.6, que lo acabo de probar... Pues entonces screen.textwidth se bugea al tener un carácter
Sep, eso parece. Que
Sep, eso parece. Que realmente no sé por qué analizas caracter por caracter cuando podrías hacerlo palabra por palabra (más rápido, y funciona mejor).
Mmm...
Pues simplemente porque quiero que el texto ocupe toda la pantalla, tipo terminal, pero como bien dices tendré que hacerlo por palabras. ¡Qué asco! >.<
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
Mmm...
Yo para calcular el tamaño del texto y hacer un print centrado uso esto, ojo, es para NDS (Muy facilito de portar), dado a que no existe la función screen.textwidth
Salu2! §
Hay un problema
El problema es que la fuente de la PSP no es monoespaciada, por lo que todos los caracteres tienen diferente ancho.
Ups
No conté con eso...
PD: Acabo de encontar el code de una terminal que había hecho hace mucho tiempo para NDS, aunque es posible que tenga algún que otro error.
Espero que te sea util!
Gracias, pero no es lo que busco
Lo estás analizando como número de caracteres, y yo necesito ancho en píxeles. Tendré que esperar a que lo arreglen...