Duda: Reconstruir función print en LuaDev.

Hola a todos los coders. Quiero presentar una duda, la cual tengo desde que empecé a programar.

Es cierto que gracias al gran trabajo de Deviante y su preciada creación, LuaDev, podemos imprimir en pantalla con la fuente personalizada en formato pgf que prefiramos. Ciertamente, esto es muy util, pero mi duda se remonta a más allá de una fuente personalizada: crear tu propio print.

Es decir, quiero hacer una funcion por la cual, si tengo las imagenes de las letras que quiero imprimir, cuando se designe un string a la función print personalizada, sean dichos strings los que aparezcan como las imagenes.

Os dejo un ejemplo rapido de lo que me refiero (la he hecho rapida solo para aclarar ideas, esta mal hecha y a la ligera):

a = image.load("Letras/a.png")
b = image.load("Letras/b.png")
c = image.load("Letras/c.png")
 
function write(writex,writey,string)
if string == a then
image.blit(writex,writey,a)
end
if string == b then
image.blit(writex,writey,b)
end
if string == c then
image.blit(writex,writey,c)
end
end
 
--Funcionamiento
 
while true do -- etc,etc…
write(20,20,abc)
screen.flip()
end

Pillais mas o menos la idea. Esta muy mal hecho el code, habría que desarrollarlo muchisimo (poner los espacios entre letras, la identificacion de strings, variables, y un largo etc...), pero esa es basicamente la idea.

¿Podría hacerse?


 

 


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Por supuesto, con ciertas

Por supuesto, con ciertas limitaciones cualquier cosa es posible. Viendo tu code, se me ocurre una manera inmediata de lograrlo:

alfabeto ={
a=image.load(...)
b=image.load(...)
...
...
--Así para todas las letras... será largo, es recomendable hacerlo en otro script.
}
 
function write(x,y,txt)
  local xx=x
  for i=1,txt:len() do
     if txt:sub(i,i) ~= " " then   --Saltar los espacios en banco =)
        alfabeto[txt:sub(i,i)]:blit(xx,y)   --Bliteo una letra a la vez
     end
        xx=xx+ancho_letras  --Para que no se empalmen las letras
  end
end

Menos code... más sencillo... igual resultado (espero xD), incluso se podría modificar para escribir horizontal o vertical =)

Sobre ese code, lo único que hay que saber es que string.len() devuelve el largo de una cadena (no en pixeles, sino en caracteres) contando espacios en blanco; y que string.sub() devuelve un trozo de una cadena. En mi code, uso el mismo número como inicio y fin, de tal forma que sólo devuelve un caracter a la vez (si txt fuera Scenebeta, por ejemplo, me devolvería S, luego c, después e y así sucesivamente).

Muchas gracias...

Y, a la hora de hacer las imagenes de las letras... debería dejar algun pixel alrededor o lo recorto al minimo tamaño posible??

Como gustes. Si no dejas

Como gustes. Si no dejas espacio, en el code se puede dejar, cambiando esta línea:
xx=xx+ancho_letras
por:
xx=xx+ancho_letras+2

Ese 2 puede ser cualquier cosa, sería la holgura en pixeles de una letra a otra.

Personalmente, yo no usaría un code así, rellenar la tabla del alfabeto es mucho trabajo y ocupa muchas líneas. Estoy viendo si se puede usar en su lugar un sprite, como éste por ejemplo, para ahorrame esa tabla ;)

De poder se puede como no lo

De poder se puede como no lo he pensado, sinembargo alguna vez vi un proyecto de Deviante de esos que por alguna razon no vieron la luz, en la que el usaba un texto asi como dice RG. Asi que se puede. Ver si el ve el tema y nos aclara, aunque seguro chime o RG lo logran sin mucho esfuerzo.

 

Saludos.

Gracias por el voto de

Gracias por el voto de confianza. Y si, ya tengo algo, no es 100% funcional aún, lo estoy afinando.

Si logro que vaya como debe, les cuelgo una librería ;)

Muchas gracias...

Mientras tanto tendré que improvisar con alguna fuente parecida LOL

Un saludo.

Ya está lista, aquí la tienen

Ya está lista, aquí la tienen =)

PERFECTO.

Te he dejado el mensaje de agradecimiento en tu post.

Un saludo.

Eso mismo tenía pensado...

Pero no he trabajado nunca con sprites. Habrá que aprender a hacerlo...

Un saludo.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.