He aqui nuestras queridas apps, que cada vez que añadimos algo se va haciendo el código más y más largo, más y más ILEGIBLE. Falla algo y te vuelves loco buscandolo. Solución, intentar "modular" nuestra app. Un ejemplo así sencillo sería... por ejemplo... enga va, una shell.
Antes de comenzar, como siempre, PENSAMOS.
Qué queremos... un escritorio... un cursor... algun widget... tipo relojito... oh, solo con esto el código será inhumano.... pues nop, no os desespereis...
Como jack el destripador, vayamos por partes, o mejor dicho, MODULEMOS el programa.
ESCRITORIO:
Quiero que sea un wallpaper... y mm... de momento nada mas.
escritorio = { img = image.load("rutafondo.png"), blit = function (yomismo) yomismo.img:blit(0,0); end, }
Por que la variable "yomismo" dentro de la función? Lo veremos más adelante...
CURSOR:
Enga, el cursor, quiero que sea con el analógico... pues vamos:
cursor = { img = image.load("rutacursor.png"), x = 240, y = 136, procesa = function (yomismo) if controls.analogx > 40 then yomismo.x = yomismo.x + 3; end if controls.analogx < 40 then yomismo.x = yomismo.x - 3; end end, blit = function (yomismo) yomismo:procesa(); yomismo.img:blit(yomismo.x,yomismo.y); end }
Eiii, este se complica... nada, son dos variables mas, X e Y, y una funcion para leer los controles. Mismo truco de yomismo.
RELOJITO:
Amos con un relojito!
relojito = { blit = function (yomismo) screen.print(10,10,os.date()); end }
Ehh, este es sencillo! xD No pasa nada, es a metodo de ejemplo.
Técnica "yomismo" o self :
Recordar que una tabla, si se llama una función con DOS PUNTOS, el PRIMER argumento de la función será esa misma tabla. Es decir, al hacer cursor:blit(); estamos haciendo en realidad: cursor.blit(cursor); (o algo así).
Ahora, como quedaría el programa principal?
Si hemos guardado esos tres codigos en tres archivos .lua distintos, wall.lua, cur.lua y rel.lua, pues el code sería tal que así:
dofile("wall.lua"); dofile("cur.lua"); dofile("rel.lua"); while true do controls.read(); escritorio:blit(); relojito:blit(); cursor:blit(); screen.flip(); end
Eii, como cambia la cosa! Pues hale, tomaroslo como recomendación para que estructuréis mejor vuestras aplicaciones, y encontréis rápidamente los errores. Más adelante ya postearé más "how to" o tutos de este tipo. Un saludo.
Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es
Me parece que esté trozo está
EDITO: Me he confundido, el post está correcto
Me parece que esté trozo está mal:
A mí solo me funciona si lo pongo así:
Salu2
Yo lo que hago es modularlo
Yo lo que hago es modularlo todo en funciones. Y nunca salir del archivo.
No
Yo al contrario, lo modulo en funciones y en archivos diferentes...
Creo que queda más bonito así.
cada cual a su estilo
cada cual a su estilo jaja
salu2
XDD
Yo creo que me paso haciendolo así... por lo menos no tengo que bajar el ratón, solo picar en el archivo jajajajaja
Así queda mas "bonico".
Muy bueno, dev.
Un saludo.
:O
Gracias por el tuto :DD