https://www.segasaturno.com/portal/viewtopic.php?f=33&t=7676&p=78086#p78086 ----------------------------------- Ryo Suzuki 12 May 2014, 03:19 AM Re: Trasteando con el Lua Player de Saturn (Tutorial) ----------------------------------- Qué buen rollo! Luego os contesto a todos. Voy a dar la "clase" de hoy y luego os cito y os comento a cada uno. Bueno, lo primero es decir que no he podido hacer los particulares deberes que me auto impuse. No he sido capaz aún de poner sprites en pantalla porque es bastante más difícil de lo que sospechaba -también hay que señalar que para mi todo es complicado-, creo que los sprites al fin de al cabo hay que tratarlos un poco como polígonos. Es delicado por lo que veo convertir al formato adecuado, cargarlo en la memoria de video y demas rollos... No os aburro pero, de momento, queda pospuesto. Lo de mostrar texto de diferente color tampoco lo he conseguido. Pensaba que seria una chorrada con el comando [b]slCurColor[/b], pero no ha resultado tan sencillo como sospeché. Parece ser que hay que definir la paleta primero y en las pruebas que he realizado no he conseguido tampoco tener éxito. Igual alguno de vosotros consigue hacerlo, sería bienvenido si lo lograis y lo explicaráis por aquí (os pongo un post de SegaXtreme en el que hablan de ello y tienen también problemas para lograrlo, es en Orbit pero nos puede dar ideas para tratar de hacerlo en Lua: http://segaxtreme.net/forum/showthread.php?tid=9166 ) Estas dos cosas ya las investigaré por mi cuenta, o trataré de consultaos por aquí a los compañeros que puedan echar un cable al saber mas del tema. Para no estancarme voy a sacarme alguna otra cosa de la manga: [b]Azar y condicionales[/b] Vamos a aprender a generar un número al azar con la Saturn. En principio puede parecer que no tiene mucha utilidad, pero, con casi toda seguridad, es posible que le saquemos partido con algo de ingenio, ya vereis. También nos va a servir para tocar los condicionales. Se ve que las sentencias condicionales en programación junto con los bucles son los pilares de la programación estructurada. Empecemos con el número al azar. Para hacer que la máquina se invente un número al azar vamos a tirar de un comando de la librería de Sega, en este caso es [b]slRandom()[/b] Una función matemática que está descrita de esta forma en la documentación oficial: [quote]slRandom Random number generator Format: FIXED slRandom() Parameters: None Function: This function generates a random FIXED-type value in a range from 0 to 1. Return Value A FIXED-type value ranging from 0.0 to 1.0[/quote] Vale, por lo que dice se usa sin parámetros y te genera un numero random que puede oscilar entre el 0.0 y el 1. Ahora lo probaremos, que es gratis :) En cuanto a los condicionales, esta vez tiramos de Lua. Le echo un vistazo a la documentación buscando por internet y me pone algo así: [quote]An if statement tests its condition and executes its then-part or its else-part accordingly. The else-part is optional. if a<0 then a = 0 end if a MAXLINES then showpage() line = 0 end[/quote] De acuerdo, tambien puedo mirar en los ejemplos del Lua Player que hacen uso de condicionales, como es normal. [b]A programar de nuevo[/b] Pero menos cháchara y vayamos al grano otra vez. Me he inventado este código tras quebrarme un rato la cabeza y tener varios fallos de sintaxis, problemas varios, etc.. Ahora ya funciona: [code linenumbers=false]--//------------------------------------------------------------------------ --// Ejemplo de azar y condicionales --//------------------------------------------------------------------------ slInitSystem(TV_320x240,NULL,1) slPrint("Generamos un numero al azar -", 2, 1) slRandom() if slRandom()<0.49999999999999 then slPrint("RESULTADO: Ha salido menos de medio", 2, 3) else slPrint("RESULTADO: Ha salido mas de medio", 2, 3) end slPrint("Para los desconfiaos,", 2, 5) slPrint("aqui esta la prueba:", 2, 6) slPrint(slRandom(), 2, 7) slPrint("-------------------", 2, 10) slPrint("Ahora generamos otro distinto -", 2, 11) slRandom() if slRandom()<0.49999999999999 then slPrint("Ha salido menos de medio", 2, 13) else slPrint("Ha salido mas de medio", 2, 13) end slPrint("A las pruebas me remito:", 2, 14) slPrint(slRandom(), 2, 15) slPrint("Ryo Suzuki _ www.segasaturno.com", 2, 18) while true do slSynch() end[/code] ¿Qué tal? ¿Parece sencillo? Lo repito, pero esto se dará por hecho cada vez que haya algo nuevo de código que hagamos, copiamos uno de los ejemplos que tengamos y le cambiamos el nombre para usarlo con esta nueva prueba. Podemos por ejemplo darle el nombre a la carpeta [b]IFRANDOM[/b] o lo que se os ocurra. Guardamos el correspondiente 0_orig.lua con este codigo que os he puesto, generamos la iso y a correrla rápidamente en el emulador. Nos aparecerá esto: [img]http://www.segasaturno.com/portal/files/images/2/azar.jpg[/img] Bien, ha funcionado. Ha generado un par de números al azar y ha puesto una condición en ambos casos para comprobar su valor, si el valor era menos de 0.5 ha puesto en pantalla una cosa que correspondía y si era más ha puesto la otra conveniente. En definitiva, hemos usado generación de azar y sentencias condicionales para que nuestro programa obre en consecuencia. [i]-continua...[/i]