![]() |
![]() |
![]() |
|
![]() |
#1 |
Erudito ![]() Ingreso: junio-2009
Mensajes: 5.027
Sexo: ![]() País:
Agradecido: +8.685
|
![]()
Hol@ a todos poco a poco voy a hacer una saga de tutoriales de Lua para que apreandais un poco , bueno creo que me esquivocado de categoria esto deberia ir en programacion
![]() LUA es un Lenguaje de programacion compacto, que permite ser ejecutado en dispositivos portatiles(especialemte PSP). No necesita compilacion ya que programas como HM Lua Player (especialmente las versiones 7 y , lo ejecutan, tambien hay un lua player para windows. 2. Entorno Necesitas: Notepad++ o algun programa parecido Este tutorial Ganas de aprender 3. Hello World Aqui os enseñare a hacer un Hello world bastante simple 1ªParte: Colores Código PHP:
Ahora vamos al color "blanco" es el nombre que le emos dado a nuestro color, puede llamarlo, rojo, amarillo o cubata o azul, da igual el programa no hace caso de el nombre sino de el color que representa "Color.new" es una instruccion que indica al programa que enter los parentesis siguientes va a haber un color "(255, 255, 255)" es el blanco en colores RGB (Red, green, blue), en esos 3 numeros se encuentra cualquier color, a continuacion os mostrare una lista de algunos de los colores mas usados. (255, 255, 255) = blanco (255, 0, 0) = rojo (0, 255, 0) = verde (0, 0, 255) = azul (0, 0, 0) = negro (255, 255, 0) = amarillo El "=" entre el nombre del color y Color.new sirve para vincular el nombre del color con el color en si 2ª Parte: Bucle del programa Aqui va el cuerpo del programa, es decir lo que hara que se muestre en pantalla entre otras cosas Código PHP:
"screen:clear()" limpia la pantalla, sin esto se deberia ver llena de codigos si entre los parentesis se pone un color declarado arriba borrara la pantalla y la pintara del color escrito "screenrint" es una funcion que permite mostrar texto en la pantalla; entre los parentesis van "(1, 1, " estos numeros son las coordenadas de pixeles en las que tiene que empezar el texto, la pantalla de la PSP tiene 480 pixeles de larga y 272 de alta; despues de los numeros lo escrito entre comillas " "(texto)", " es el texto que se desea mostrar, si se hace muy largo el texto se sale de la pantalla por lo tanto no se puede leer, se recomienda escribir en varias lineas; el "blanco)" del final dice el color de los cargados arriba que se quiere aplicar el texto. "screen.flip()" muestra en la pantalla todos los screenrint escritos en el bucle principal despues del screen:clear() "end" cierra el bucle principal Y ya esta hecho, ahora os enseñare a guardarlo en la PSP, bien suponiendo que habeis descargado el LUA player HM7 o 8 y puesto en PSP/Game y habeis escrito el programa con Notepad++, bien, le dais en el Notepad a Archivo y a Guardar como, en tipo le poneis, lua source file (*.lua), y de nombre le poneis script.lua, elegis la carpeta de PSP/GAME donde esta guardado el Lua player y guardais ahi, luego en la PSP vais a Juegos -> memory stick -> elegis el Lua player y lo ejecutais, y ya deberia funcionar vuestro programa Última edición por Eloy58; 09-sep-2009 a las 17:21 |
![]() |
#2 |
Erudito ![]() Ingreso: junio-2009
Mensajes: 5.027
Sexo: ![]() País:
Agradecido: +8.685
|
![]()
Funciones y pulsaciones
Llegamos a algo interesante, vamos a hacer que nuestro programa sepa que estamos pulsando, y de regalo a ver el % y el tiempo de la bateria, pero antes vamos a explicar que es una variable(hara falta para el tiempo, aunque tambien se puede activar sin variables) 1. Variables Una variable es como un atajo ejemplo Código PHP:
"System.powerGetBatteryLifePercent()" es la instruccion que se usa para ver el % de la bateria El "=" es para asignar la instruccion a la variable 2. Lectura de pulsaciones Y llegamos a lo interesante, vamos a ver como hacer que la PSP nos entienda, o al menos sepa que estamos pulsando y responda de alguna manera. Para ello vamos a hacer un programa, el siguiente: Código PHP:
Bueno vamos con lo nuevo(es un codigo largo pero luego lo analizaremos ): Código PHP:
Código PHP:
Código PHP:
Código PHP:
Código PHP:
Código PHP:
Código PHP:
Ahora describire la pulsacion de la L para enseñar como e usado la variable Código PHP:
Código PHP:
Código PHP:
Código PHP:
Y ahora vamos con el bucle principal del programa Código PHP:
Pues ya esta, hemos acabado el capitulo 2 de programacion en lua , guardar el archivo como script.lua y ejecutarlo del mismo modo que el otro |
![]() |
#3 |
Erudito ![]() Ingreso: junio-2009
Mensajes: 5.027
Sexo: ![]() País:
Agradecido: +8.685
|
![]()
Cargando imagenes
1. Cargar las imagenes Vale, para mostar las imagenes primero hay que cargarlas asi que esto es lo primero Código PHP:
Código PHP:
Bien "fondo" es el nombre que le emos asignado a la variable de la imagen, es decir, el nombre que tendra la imagen en el programa "Imagen.load" es la instruccion que le dice al programa que ahi hay una imagen y no otra variable Y " ("ms0:/Pictures/Vivayo.png") " indica al programa donde esta la imagen y su nombre, las imagenes tienen que ser en .png, si os fijais el ejemplo 2 es diferente, eso quiere decir que en vez de empezar en la MS0 empieza en el directorio donde esta el programa Y como siempre el "=" es para unir imagen y variable 2. Mostrar las imagenes Lo de antes no valia para nada sin esto, aqui esta lo bueno, la diversion, MOSTRAR LAS IMAGENES, y se hace asi: Código PHP:
Os pongo 2 ejemplos, con distintos grados de difcultad Código PHP:
Código PHP:
"screen:blit" es la instruccion que muestra la imagen "(1, 1, " son las coordenadas de origen de la imagen "fondo, " es la variable anteriormente definida de la imagen Hasta aqui ya vale para ver la imagen pero si nos gusta aventurarnos: "5, 5, 30, 30)" aqui algo interesante, si quereis que la imagen no se muestre entera sino solo una parte, usar esto, el 5, 5 es el punto de origen a traves del cual empezara a verse y el 30, 30 es el que se dejara de ver, formando un cuadrado o rectangulo en este caso de 25 pixeles de alto y ancho 3. Vale, ahora un programilla de ejemplo Código PHP:
Por cierto la pantalla tiene 480 pixeles de ancho y 272 de alto Última edición por jchierro; 07-sep-2009 a las 10:23 |
Los siguientes 4 usuarios agradecen a jchierro por este mensaje: | ||
![]() |
#4 |
Erudito ![]() Ingreso: junio-2009
Mensajes: 5.027
Sexo: ![]() País:
Agradecido: +8.685
|
![]()
Funciones interesantes y colores RGB
1. Colores RGB Bien, pues los RGB estan compuestos por 3 colores rojo, verde y azul. Cada 1 tiene un valor entre 0 y 255. Si recordais(a no ser que tengais amnesia) e el primer tuto os di estos colores (255, 255, 255) = blanco (255, 0, 0) = rojo (0, 255, 0) = verde (0, 0, 255) = azul (0, 0, 0) = negro (255, 255, 0) = amarillo Pues ahora os dare mas y los explicare El primero es la R, el rojo(red), cualquier numero del 0 al 255 es un tono de rojo mas claro o mas oscuro El de enmedio es la G, el verde(green) al igual que el de arriba va de 0 a 255 y cada numero es un tono Y el ultimo es la B , el azul(blue) y como los otrs va de 0 a 255 y cada numero es un tono Vale, pues solo usando 255 y 0 entre los 3 se pueden hacer muchas combinaciones A partir de ahora los que ponga estan sacados de una paleta de colores de internet, asi que no estoy muy seguro de ellos, podeis probarlos y si no son corregirme 255, 0, 255 = ¿Lila? 0, 255, 255 = ¿Cyan? No tiene por que ser solo 255 y 0, Tambien se podria conseguir colores como el gris asi: 100, 100, 100 = ¿gris oscuro? 200, 200, 200 = ¿gris claro? o Algun tono claro asi: 200, 200, 255 = ¿Azul muy claro? 255, 150, 150 = ¿Rosa? 255, 40, 0 = ¿Naranja oscuro o rojo claro? Podeis probar combinaciones, y si quereis que añada todos los colores que vayais probando aqui decirlos Asi se van formando colores, variando entre los numeros 2. Funciones interesantes Ahora vamos con algunas funciones que tiene LUA para la PSP interesantes. 2.1 Botones pad:home() -- Home tiene la funcion de salir por defecto, hay que desactivarsela (solo posible en Lua Player HM pad:hold() pad:note() pad:analogX() -- Rango de -127 a 128. pad:analogY() -- Rango de -127 a 128. 2.2 Mensajes, Textos e imagenes System.message() Imprime un mensaje a la pantalla con las opciones: "Sí, no, y volver". Es decir un mensaje del sistema. System.message("Hola",0) -- muestra solo la opcion de "volver". System.message("Hola",1) -- muestra las opciones: "Sí, no, y volver". Por si solo esto de arriba no sirve de nada, necesita esto: System.buttonPressed() Retorna la acción de la opción seleccionada en la función System.message(). Utilice "1" para que nos devulva "Yes/No" o "0" para que devuelva "1/0". button = System.buttonPressed(1) If button == "yes" then System.Quit() end button = System.buttonPressed(0) If button == 1 then System.Quit() end Otra funcion interesante es System.startOSK( string_defecto , string_mensaje ) -- Muestra el teclado en pantalla. isoname = System.startOSK( "ms0:/ISO/*.ISO", "Enter Name and Path" ) screenrint( 1, 1, isoname, red ) Ahora alguna de fuentes Font.init() Inicializa la nueva libreria de fuentes de texto "TTF". Font.term() Termina y cierra la libreria de fuentes de texto "TTF". font = Font.load( path/filename.ttf ) fuente = Font.load( "./fuentes/font.ttf" ) -- Carga una fuente de texto formato "TTF" fuente:setPixelSizes(0, 20) -- Altura de la fuente 20 pixeles. blanco = Color.new( 255, 255, 255 ) screen:fontPrint( fuente, x, y, "Script de Ejemplo", blanco ) screen.flip() Font.unload( fontslot ) Borra una fuente "TTF" de un "slot". Ejemplo: Font.unload( 1 ) Font.color( Rojo, Verde, Azul, Alpha ) Retorna un valor Hexadecimal de los componentes de un color. Ejemplo: rojo = Font.color( 255, 0, 0, 255 ) -- "0xFF0000FF Font.print( x, y, var, color, fontslot ) Escribe en la pantalla "screen" con una fuente de texto "TTF". Ejemplo: Font.init() Font.load( "ms0/font.ttf", 1 ) blanco = Font.color( 255, 255, 255, 255 ) Font.print( 10, 10, "Hola Betapeseperos.", blanco, 1 ) screen.flip() Font.unload(1) Font.term() IntraFont.init() Inicializa la nueva libreria de las IntraFont o fuentes propias de la PSP "PGF". IntraFont.term() Termina y cierra la libreria IntraFont. IntraFont.load( "flash0:/font/ltn8.pgf", opcion ) Carga una fuente texto "PGF" y una opción de las cuatro: opcion: 1 = Normal 2 = Calidad Rápida 3 = Calidad Buena 4 = Japaniese Ejemplo: IntraFont.load( "flash0:/font/ltn8.pgf", 2 ) IntraFont.color( Rojo, Verde, Azul, Alpha ) Retorna un valor Hexadecimal de los componentes de un color. Ejemplo: rojo = IntraFont.color( 255, 0, 0, 255 ) -- "0xFF0000FF IntraFont.print( x, y, var, Size, Color, Glow ) Escribe en pantalla con un Color y una Sombra. Ejemplo: IntraFont.init() IntraFont.load( "flash0:/font/ltn8.pgf", 2 ) red = IntraFont.color( 255, 0, 0, 255 ) yellow = IntraFont.color( 0, 255, 255, 255 ) screen:clear() Gu.start3d() IntraFont.print( 1, 35, "WARNING", 3, yellow, red ) IntraFont.print( 1, 90, "PELIGRO", 1, red, 0 ) Gu.end3d() screen.flip() IntraFont.term() image:drawLine( x , y , x1, y1, color ) -- Dibuja una línea. nil image:fillRect( x , y , ancho , alto , color ) -- Dibuja un rectángulo. nil imageixel( x , y , color ) -- Pinta un pixel o punto. imagen = Image.createEmpty( 50 , 50 ) blanco = Color.new( 255, 255, 255 ) imagenixel( 10, 10, blanco ) screen:blit( 0, 0, imagen, true ) screen.flip() color = imagenixel( x , y ) -- Obtiene el color de un punto o pixel. 1.3 Tiempo System.getDate( opción ) Retorna la fecha de la consola PSP, no funciona en el PC al ser una función específica. Solo una opción a la vez: año = 1, mes = 2, día = 3 anno = System.getDate(1) -- Retorna el año. System.getTime( opción ) Devuelve la hora de la consola PSP, no funciona en el PC al ser una función específica. Solo una opción: hora = 1, minutos = 2, segundos = 3, microseg = 4, pm-am = 5. hora = System.getTime(1) -- Retorna la hora de la PSP. 1.4 Otros dofile( path/file.lua ) Carga y ejecuta código LUA que esté en un archivo. Es útil para organizar el programa en partes, en un archivo los colores e imágenes, en otro los sonidos, en otro las funciones, etc... Es util para descomponer un programa en módulos para su mejor extructuración evitando un único archivo demasiado extenso. Ejemplo: dofile("./archivos/variables.lua") lo***ile( path/file.lua ) Carga código LUA que esté en un archivo. Es util para descomponer un programa en módulos que se ván ha ejecutar varias veces, como presentaciones, animaciones, tutoriales, etc... En definitiva ejecuta código similar a una función solo que es externa y sin argumentos de entrada ni salida. _tutorial = lo***ile("./System/tutorial.lua") -- Carga el código. _tutorial() -- Ejecuta el código como una función. System.createDirectory( path ) Crea un nuevo directorio. Ejemplo: System.createDirectory("LuaPlayerHM") System.doesDirExist( path ) Retorna 1 si existe el Directorio, 0 si no existe. Ejemplo: ok = System.doesDirExist("ms0:/psp") System.doesFileExist( path/file ) Retorna 1 si existe el archivos, 0 si no existe. Ejemplo: ok = System.doesFileExist("ms0:/psp/eboot.pbp") System.copyFile( oldpath/file , newpath/file , 1-0 ) Copia un archivo a otro lugar, 1 Borra archivo viejo, 0 no lo borra. Ejemplo: System.copyFile("oldfiledir.lol","newfiledir.lol", 1) -- Mueve el archivo. System.copyFile("oldfiledir.lol","newfiledir.lol", 0) -- Copia el archivo. System.removeDirectory( path ) Borra un directorio. Ejemplo: System.removeDirectory("SonyOFW") System.removeFile( path/file ) Borra un archivo. Solo válida para PSP no para PC. Ejemplo: System.removeFile("Sonyrestrictions.lol") System.nickName() -- Retorna el Nickname de la PSP. name = System.nickName() System.playerVer() -- Retorna la versión del LuaPlayerHM: ver = System.playerVer() string System.cfwVersion() -- Retorna la versión del Custom FirmWare de la PSP. Muestra la versión del FirmWare de la PSP, seguido de "M33" si es un CFw de Dax o "???" si es de otro. Ahora actualizado a CFW Gen. CFver = System.cfwVersion() -- Retorna "3.90M33-3" System.getModel() Retorna el modelo de consola PSP, Clasica o Slim. El modelo Slim tiene el doble de memoria. Usa (1) para que retorne un string o (0) para que retorne un "number": PSP Clasica string = "PHAT" number = 1000 PSP Slim string = "SLIM" number = 2000 PSPtype = System.getModel(1) -- Retorna "PHAT" PSPtype = System.getModel(0) -- Retorna "1000" System.madeby() -- Muestra la versión LuaPlayerHM y los creadores, ejemplo: System.madeby() Muestra la versión entre parentesis así: ( 1 para "sí / no", o 0 "para volver" ) : System.madeby(0) System.getTotalSize() -- Tamaño total del dispositivo: size = System.getTotalSize("ms0:/") System.getFreeSpace() -- Espacio libre del dispositivo: size = System.getFreeSpace("ms0:/") System.getFileSize() -- Tamaño en bytes de un archivo: size = System.getFileSize("ms0:/hello.txt") System.getDirSize() -- Tamaño en bytes de un directorio: size = System.getFileSize("ms0:/PSP") System.powerIsPowerOnline() -- Comprueba si está conectada a un sistema de alimentación externo. System.powerIsBatteryExist() -- Comprueba si la batería está conectada. System.powerIsBatteryCharging() -- Comprueba si la batería está cargando. System.powerGetBatteryChargingStatus() -- Comprueba el estado de carga de la batería. System.powerIsLowBattery() -- Comprueba si la batería está baja. System.powerGetBatteryLifePercent() -- Devuelve el porcentaje de carga de la batería. System.powerGetBatteryLifeTime() -- Devuelve el tiempo restante de la batería. System.powerGetBatteryTemp() -- Devuelve la temperatura de la batería. System.powerGetBatteryVolt() -- Devuelve el voltaje de la batería. System.powerTick() Envía un " power tick" a la PSP. Detiene la psp va a al modo de espera y powersaving mode. System.LCDTimerEnable() -- Activa que la pantalla LCD se apague después de no actividad. System.LCDTimerDisable() -- Desactiva que la pantalla LCD se apague después de no actividad. System.LCDTimerGet() -- Devuelve el tiempo del powersave. System.suspend() -- Pone la PSP en modo suspendido. System.shutdown() -- Apaga la consola PSP. System.Quit() -- Termina la ejecución LuaPlayer y sale al XMB. System.getBusSpeed() -- Returns the Bus speed. System.getCpuSpeed() -- Retorna la velocidad de la CPU. System.setLow() -- Pone la Cpu a 133Mhz System.setReg() -- Pone la Cpu a 266Mhz System.setHigh() -- Pone la Cpu a 333Mhz System.memclean() Limpia la memoria y borra los archivos no usados en la memoria. "Úsala para conseguir memoria libre." number System.getFreeMemory() -- Retorna los bytes de memoria libres. screenrint(0,0, System.getFreeMemory() / 1024 / 1024 .. " megabytes memoria libre." , color ) UMD.init() Inicia la unidad UMD y comprueba si hay disco. Si no hay disco muestra un mensaje y no carga la unidad UMD "disk0:” UMD.term() -- Para la unidad UMD. UMD.checkDisk() -- Comprueba si hay un disco UMD en la unidad. UMD.ripISO( path/file.iso ) Guarda la imagen ISO de un UMD en el path dado de la tarjeta de memoria. UMD.ripISO("ms0:/ISO/Game.ISO") UMD.getSize() -- Retorna el tamaño en bytes de un UMD. UMDSize = UMD.getSize() System.startUMD() Carga y arranca un UMD de la unidad UMD. Si no hay un UMD insertado muestra un mensaje “no UMD in the Drive” System.startISO() -- Carga y arranca un juego PSP de una imagen ISO de la tarjeta de memoria. System.startISO("ms0:/ISO/game.iso") -- UMD MODE PUESTO A” OE isofs” System.startPSX() -- Carga y arranca una juego de PSX de la tienda playstation store. System.getEboot( "Eboot.pbp_path" , number_opcion ) Obtiene las imágenes que incorpora un Eboot.pbp: number_opcion: 1 para "ICON0.PNG" 2 para "PIC0.PNG” 3 para "PIC1.PNG" image = System.getEboot("ms0:/150.pbp",1) screen.blit(1,1,image) System.loadElf( "filepath" ) -- Carga un fichero ELF solo kernel 1.50. System.loadElf("ms0:/hi.elf") System.loadPrx( "filepath" ) Carga un fichero PRX y comienza la misma. Advertencia de que podría provocar que el jugador que no funcione correctamente o crask el sistema. System.loadPrxKernel( filename ) Carga un archivo PRX en la memoria del Kernel. Permite al Kernel las funciones a ser usadas. System.stopPRX( name ) Se detendrá y descargar un archivo PRX que ha sido cargado. Es necesario el nombre único de archivo de la PRX dado en el momento del PRX está cargado. LuaPlayerHM8. Ejemplo: name = System.loadPrxKernel( filename ) ; System.stopPRX( name ) System.runeboot( ./path/EBOOT.PBP ) Carga y arranca un archivo *.PBP en el kernel con el que se arrancó el LuaPlayerHM, normalmente 3.xx.El Kernel 1.50 soloes válido para PSP PAHT, conocidas como PSP tochas, Classic, etc. System.runeboot("ms0:/Eboot.PBP") -- 3.xx and 1.50 (in corosponding kernel) System.startGameSave() -- Guarda una partida o game data: System.startGameSave("Nombre_savegame","Nombre_gam e","Detalles/mesaje", datos_a_guardar ) System.startGameSave("Nombre_savegame","Nombre_gam e","Detalles/mesaje", datos_a_guardar, "Nombre od del juego*usado para identificar el save data”) System.startGameLoad() -- Carga una partida o game data: data = System.startGameLoad(”Nombre od del juego*usado para identificar el save data”) System.startUpdate() -- Carga un archivo update.pbp para actualizar la PSP a” m33 updates” . ZIP.extract( zipdirectory , extractdirectory , " [ password ] " ) -- Usado para extraer archivos zip. ZIP.extract("ms0:/hi.zip","ms0:/psp/hi","") -- usa "" cuando no tenga clave o password. System.usbDiskModeActivate() -- Hace una conexión USB. System.usbDiskModeDeactivate() -- Desconecta la conexión USB. System.usbDevFlash0() -- Establece el acceso a la Flash0 a través del USB. System.usbDevFlash1() -- Establece el acceso a la Flash1 a través del USB. System.usbDevFlash2() -- Establece el acceso a la Flash2 a través del USB. System.usbDevFlash3() -- Establece el acceso a la Flash3 a través del USB. System.usbDevUMD() Establece el dispositivo USB para acceder a la unidad UMD. Si no hay disco insertado en la unidad te lo dirá y usará la tarjeta de memoria insertada. El UMD será leido como una imagen ISO. System.webbrowser( Pathofwebbrowser.pbp , url ) Cargará el webbrowser con la url entrada. Si no hay url cargará el “google.com”. |
Los siguientes 4 usuarios agradecen a jchierro por este mensaje: | ||
![]() |
#5 |
Erudito ![]() Ingreso: junio-2009
Mensajes: 5.027
Sexo: ![]() País:
Agradecido: +8.685
|
![]()
Vamos ha aprender a hacer menus de seleccion.
Lo explicare con un programilla Código PHP:
Código PHP:
Código PHP:
current pasa a llamarse ingles y prevpad pasa a llamarse pad Código PHP:
|
![]() |
#6 |
Erudito ![]() Ingreso: junio-2009
Mensajes: 5.027
Sexo: ![]() País:
Agradecido: +8.685
|
![]()
Menus Avanzados
Os pongo un codigo pero lo voy a encoger, el original tiene 9 funciones y os explixo Código PHP:
Código PHP:
If current<4 then sirve para si la variable current es menor a 4 se ejecute lo siguiente que es current=current+1 esto suma 1 a la variable current else significa, de lo contrario current = 1 significa convertir la variable current en 1 elseif es una mezcla entre else e if y lo demas es practicamente igual Código PHP:
Código PHP:
|
![]() |
#7 |
Erudito ![]() Ingreso: junio-2009
Mensajes: 5.027
Sexo: ![]() País:
Agradecido: +8.685
|
![]()
Menus Con cursor(joystick)
Necesitais usar la imaginacion, luego vereis porque Código PHP:
Código PHP:
Código PHP:
Código PHP:
Código PHP:
Código PHP:
Código PHP:
Código PHP:
Código PHP:
Código PHP:
![]() |
![]() |
(0 miembros y 1 visitantes) | |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
pido consejo para aprender programación | hilbert69 | Programación | 24 | 17-mar-2019 11:25 |
Programación con Visual Basic .NET en Visual Studio 2005 VideoTutoriales.es | rix180 | Programación | 29 | 28-jul-2011 02:14 |
Programacion Neurolinguistica | piesdescalzos | AudioLibros, Manuales, Libros & Revistas | 2 | 19-ago-2010 20:57 |
computacion informatica y programacion | dan-75 | Programación | 6 | 22-jun-2010 01:50 |
Ayuda En programacion | Miguel Angel Tobon | Peticiones | 2 | 25-feb-2010 04:52 |