| Inicio | Noticias | Foros PSP | Juegos | Videos | Manuales | Buscar | Contacto | Staff | Publicidad |

Retroceder   Foros PS Vita y PSP > Comunidad > Coder's Zone: Programacion PSP y PS Vita > TUTORIALES

Respuesta
 
Herramientas
Antiguo 20/12/08, 01:21:57   #1
marioga
Member
 
Fecha de Ingreso: jul 2008
Mensajes: 44
Thanks: 0
Thanked 39 Times in 14 Posts
marioga por el buen camino
Predeterminado Tutoriales de programacion en LUA - Capitulo 2

Capitulo 2: 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, aunk tambien se puede activar sin variables)

1. Variables

Una variable es como un atajo ejemplo

Código:
porcentagebateria = System.powerGetBatteryLifePercent()
"porcentagebateria" es el nombre de la variable podrias poner el que quisieras

"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:
--Definimos colores
blanco = Color.new(255, 255, 255)
azul = Color.new (0, 0, 255)
Esta parte ya la sabemos del capitulo 1, aqui usaremos 2 colores para que se vea mas bonito XD

Weno vamos con lo nuevo(es un codigo largo pero luego lo analizaremos ):

Código:
  
--Variables y Pulsaciones
porcentagebateria = System.powerGetBatteryLifePercent()
tiempobateria = System.powerGetBatteryLifeTime()  
function LeerPulsacion ()
pad = Controls.read()if pad:right() then
screen:print( 150, 130, "Esta pulsando derecha", blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:up() then
screen:print( 150, 130, "Esta pulsando arriba", blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:down() then
screen:print( 150, 130, "Esta pulsando abajo", blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:left() then
screen:print( 150, 130, "Esta pulsando izquierda", blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:cross() then
screen:print( 150, 130, "Esta pulsando equis", blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:triangle() then
screen:print( 150, 130, "Esta pulsando triangulo", blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:circle() then
screen:print( 150, 130, "Esta pulsando circulo", blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:square() then
screen:print( 150, 130, "Esta pulsando cuadrado", blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:l() then
screen:print(160, 140, " "..porcentagebateria, blanco)
screen:print( 150, 130, "Porcentage", blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:r() then
screen:print(160, 140, " "..tiempobateria, blanco)
screen:print( 150, 130, "Tiempo", blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:start() then
screen:print( 150, 130, "Esta pulsando start", blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:select() then
screen:print( 150, 130, "Esta pulsando select", blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
end
Bueno aqui esta lo nuevo como veis no es pequeño pero es k le e mos dado funciones a todos los botones (L, R, [], /\ , O, X, y el pad de direccion, start y select y home que siempre tiene; los demas no le emos asignado funcion). Ahora analizaremos el principio, derecha y L.

Código:
porcentagebateria = System.powerGetBatteryLifePercent()
tiempobateria = System.powerGetBatteryLifeTime()
Como podeis ver (a no ser que seais ciegos XD) es que emos cargado las funciones de porcentage y tiempo de la bateria

Código:
function LeerPulsacion ()
pad = Controls.read()
Bien estas 2 lineas se encargan de que la PSP reconozca los botones que pulsamos

Código:
if pad:right() then
Traducido a español seria " Si pulsas derecha entonces" y eso es lo que hace, si pulsamos el boton derecha entonces se ejecutara lo escrito entre eso y el siquiente end

Código:
screen:print( 150, 130, "Esta pulsando derecha", blanco)
screen.flip()
Esto ya lo conocemos del primer tuto asi que no hace falta explicarlo solo decir que se ejecutara al pulsar derecha

Código:
screen.waitVblankStart(100)
screen.flip()
Estas 2 lineas son un retardo, es decir que el screenrint de encima se mantega en la pantalla el tiempo puesto entre los parentesis de screen.waitVblankStart()

Código:
end
Esto cierra la pulsacion para que solo haga lo indicado encima

Ahora describire la pulsacion de la L para enseñar como e usado la variable

Código:
if pad:l() then
Esto ya lo conoceis, la unica diferencia es que aqui esta refiriendose al L

Código:
screen:print( 150, 130, "Porcentage", blanco)
screen:print(160, 140, " "..porcentagebateria, blanco)
Aqui estamos llamando a la variable, para que al pulsar L se muestre el % de la bateria tambien nos podriamos ahorrar la variable y ponerlo donde estamos ahora mismo en lugar del porcentagebateria, se quedaria asi:

Código:
if pad:l() then
screen:print(160, 140, "Porcentage de la bateria: "..System.powerGetBatteryLifePercent(), blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
Se quedaria como ahi arriba. Y ahora el resto de la pulsacion:

Código:
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
Ya sabeis para que sirve


Y ahora vamos con el bucle principal del programa

Código:
--Bucle principal del programa
while true do
screen:clear()
screen:print(1, 1, "Pulsa L para ver el % de la bateria", azul)
screen:print(1, 11, "Pulsa R para ver el tiempo de la bateria", azul)
screen:print(1, 21, "Pulsa los demas botones para que se lea su pulsacion", azul)
screen.flip()
LeerPulsacion()
end
Eso tambien sabeis para que sirve, con la diferencia del LeerPulsacion() que esta cargando la funcion.


Pues ya esta, hemos acabado otro tutorial mas de programacion en lua guardar el archivo como script.lua y ejecutarlo del mismo modo que el otro
__________________
Historia de mi psp slim-> 3.95 ->4.00 ->[PANDORA]->1.5 m33->3.95 m33 ->4.01 m33
marioga is offline   Responder Con Cita
The Following 4 Users Say Thank You to marioga For This Useful Post:
ferferfer111 (26/09/09), jon_17_ (06/04/10), juliantxitxo (25/06/10), Seritx (20/12/08)
Antiguo 25/06/10, 00:14:45   #2
juliantxitxo
Member
 
Avatar de juliantxitxo
 
Fecha de Ingreso: jun 2010
Mensajes: 58
Thanks: 9
Thanked 4 Times in 4 Posts
juliantxitxo por el buen camino
Predeterminado Re: Tutoriales de programacion en LUA - Capitulo 2

muy muy bueno me encanta
__________________
juliantxitxo is offline   Responder Con Cita
Antiguo 08/05/11, 21:41:54   #3
MARCOSCHICO
Fuera de TDP
 
Fecha de Ingreso: nov 2010
Ubicación: Fuera TDP
Mensajes: 1.038
Thanks: 373
Thanked 717 Times in 267 Posts
MARCOSCHICO alguien especial en quien confiarMARCOSCHICO alguien especial en quien confiarMARCOSCHICO alguien especial en quien confiarMARCOSCHICO alguien especial en quien confiarMARCOSCHICO alguien especial en quien confiar
Question Re: Tutoriales de programacion en LUA - Capitulo 2

Lo he escrito yo mismo pero hay un error y nose cual es me sale este cuando lo intento ejecutar desde la PSP:

Error: SCRIPT.LUA:9: /=/ expected near /screen/

este es el code que escribí yo:

Código:
blanco=Color.new(255,255,255)
Porcentagebateria = System.powerGetBatteryLifePercent()
Tiempobateria = System.powerGetBatteryLifeTime()
function LeerPulsacion()
pad= controls.read()
if pad: right() then
screen:print(1,1,"está pulsando derecha, funciona correctamente", blanco)
screen.flip
screen.waitVblankStart(3)
screen.flip
end
if pad: left() then
screen: print(1,1,"está pulsando izquierda, funciona correctamente",blanco)
screen.flip
screen.waitVblankStart(3)
screen.flip
end
if pad: up() then
screen:print(1,1,"está pulsando arriba, funciona correctamente",blanco)
screen.flip
screen.waitVblankStart(3)
screen.flip
end
if pad: down() then 
screen:print(1,1,"está pulsando abajo, funciona correctamente", blanco)
screen.flip
screen.waitVblankStart(3)
screen.flip
end
if pad: cross() then
screen:print(1,1,"está pulsando X, funciona correctamente",blanco)
screen.flip
screen.waitVblankStart(3)
screen.flip
end
if pad: triangle() then
screen:print(1,1,"está pulsando triángulo, funciona correctamente",blanco)
screen.flip
screen.waitVblankStart(3)
screen.flip
end
if pad: circle() then
screen:print(1,1,"está pulsando O, funciona correctamente",blanco)
screen.flip
screen.waitVblankStart(3)
screen.flip
end
if pad: square() then
screen:print(1,1,"está pulsando cuandrado, funciona correctamente",blanco)
screen.flip
screen.waitVblankStart(3)
screen.flip
end
if pad: select() then
screen:print(1,1,"está pulsando Select, funciona correctamente",blanco)
screen.flip
screen.waitVblankStart(3)
screen.flip
end
if pad: start() then
screen:print(1,1,"está pulsando Start, funciona correctamente",blanco)
screen.flip
screen.waitVblankStart(3)
screen.flip
end
if pad: l() then
screen:print(1,1,"Porcentagebateria",blanco)
screen.flip
screen.waitVblankStart(5)
screen.flip
end
if pad r() then
screen:print(1,1,"Tiempobateria",blanco)
screen.flip
screen.waitVblankStart(5)
screen.flip
end
while true do
screen: clear()
screen:print(100,100,"Si quiere saber el porcentage de la bateria pulse L",blanco)
screen:print(100,111,"si quiere saber el tiempo que le queda a la bateria pulse R",blanco)
screen:print(100,122,"Si quiere tastear los botones pulse los demas botones",blanco)
screen.flip
LeerPulsacion()
end
MARCOSCHICO is offline   Responder Con Cita
Antiguo 09/05/11, 05:37:21   #4
Boujack
Boujack Palace's Renew!
 
Avatar de Boujack
 
Fecha de Ingreso: nov 2009
Ubicación: Puerto Rico
Mensajes: 1.692
Thanks: 1.653
Thanked 740 Times in 366 Posts
Boujack alguien especial en quien confiarBoujack alguien especial en quien confiarBoujack alguien especial en quien confiarBoujack alguien especial en quien confiarBoujack alguien especial en quien confiarBoujack alguien especial en quien confiar

Corazon PSPero 

Predeterminado Re: Tutoriales de programacion en LUA - Capitulo 2

Código PHP:
blanco=Color.new(255,255,255)
Porcentagebateria System.powerGetBatteryLifePercent()
Tiempobateria System.powerGetBatteryLifeTime()

function 
LeerPulsacion()
    
pad controls.read()
    
    if 
pad:right() and not oldpad:right() then
        screen
:print(10,10,"está pulsando derecha, funciona correctamente"blanco)
        
screen.waitVblankStart(3)
    
end
    
    
if pad:left() and not oldpad:left() then
        screen
: print(10,10,"está pulsando izquierda, funciona correctamente",blanco)
        
screen.waitVblankStart(3)
    
end

    
if pad:up() and not oldpad:up() then
        screen
:print(10,10,"está pulsando arriba, funciona correctamente",blanco)
        
screen.waitVblankStart(3)
    
end

    
if pad:down() and not oldpad:down() then 
        screen
:print(10,10,"está pulsando abajo, funciona correctamente"blanco)
        
screen.waitVblankStart(3)
    
end

    
if pad:cross() and not oldpad:cross() then
        screen
:print(10,10,"está pulsando X, funciona correctamente",blanco)
        
screen.waitVblankStart(3)
    
end

    
if pad:triangle() and not oldpad:triangle() then
        screen
:print(10,10,"está pulsando triángulo, funciona correctamente",blanco)
        
screen.waitVblankStart(3)
    
end

    
if pad:circle() and not oldpad:circle() then
        screen
:print(10,10,"está pulsando O, funciona correctamente",blanco)
        
screen.waitVblankStart(3)
    
end
        
    
if pad:square() and not oldpad:square() then
        screen
:print(10,10,"está pulsando cuandrado, funciona correctamente",blanco)
        
screen.waitVblankStart(3)
    
end
    
    
if pad:select() and not oldpad:select() then
        screen
:print(10,10,"está pulsando Select, funciona correctamente",blanco)
        
screen.waitVblankStart(3)
    
end
    
    
if pad:start() and not oldpad:start() then
        screen
:print(10,10,"está pulsando Start, funciona correctamente",blanco)
        
screen.waitVblankStart(3)
    
end
    
    
if pad:l() and not oldpad:l() then
        screen
:print(10,10,"Porcentagebateria",blanco)
        
screen.waitVblankStart(3)
    
end
    
    
if pad:r() and not oldpad:r() then -- aqui te falto antes de la r
        screen
:print(10,10,"Tiempobateria",blanco)
        
screen.waitVblankStart(3)
    
end
oldpad
=pad
end

while true do
    
screenclear()
    
screen:print(100,100,"Si quiere saber el porcentage de la bateria pulse L",blanco)
    
screen:print(100,111,"si quiere saber el tiempo que le queda a la bateria pulse R",blanco)
    
screen:print(100,122,"Si quiere tastear los botones pulse los demas botones",blanco)
    
LeerPulsacion()
    
screen.flip()
    
screen.waitVblankStart()
end 
Primero el While true do se repite siempre constantemente por eso lo saque fuera ya que por el tipo de app lo lleva así, ya luego aprenderás ha realizar un codigo con solo funciones y wtd dentro de las funciones.

Los screen.flip() solo van antes del end en el WTD, antes del end para que todo de pinte en pantalla ya que esa es la función del flip.

Te comiste un : por ahí y te lo anote como comment

Por lo demás creo que bastante bien, lee mas sobre lua, que con ese entusiasmo y practicando se llega lejos.
__________________
Boujack is offline   Responder Con Cita
Antiguo 09/05/11, 19:30:49   #5
MARCOSCHICO
Fuera de TDP
 
Fecha de Ingreso: nov 2010
Ubicación: Fuera TDP
Mensajes: 1.038
Thanks: 373
Thanked 717 Times in 267 Posts
MARCOSCHICO alguien especial en quien confiarMARCOSCHICO alguien especial en quien confiarMARCOSCHICO alguien especial en quien confiarMARCOSCHICO alguien especial en quien confiarMARCOSCHICO alguien especial en quien confiar
Predeterminado Re: Tutoriales de programacion en LUA - Capitulo 2

cual es el : que me comí? jeje perdona por los fallos es que tambn estoy aprendendo C para PC y me lio un poco jajaj
MARCOSCHICO is offline   Responder Con Cita
Antiguo 10/05/11, 08:23:35   #6
Boujack
Boujack Palace's Renew!
 
Avatar de Boujack
 
Fecha de Ingreso: nov 2009
Ubicación: Puerto Rico
Mensajes: 1.692
Thanks: 1.653
Thanked 740 Times in 366 Posts
Boujack alguien especial en quien confiarBoujack alguien especial en quien confiarBoujack alguien especial en quien confiarBoujack alguien especial en quien confiarBoujack alguien especial en quien confiarBoujack alguien especial en quien confiar

Corazon PSPero 

Predeterminado Re: Tutoriales de programacion en LUA - Capitulo 2

El del if pad r, es if pad:r te lo he escrito en el code. Consejo aprende un lenguaje a la vez, Si estas con C para PC yo me quedaría con ese y luego de aprenderlo bien en PC me paso a C psp que no son muy diferentes.
__________________
Boujack is offline   Responder Con Cita
Respuesta

Bookmarks

Herramientas



La franja horaria es GMT +2. Ahora son las 01:02:16.


Powered by: vBulletin, Versión 3.8.5
Derechos de Autor ©2000 - 2020, Jelsoft Enterprises Ltd.
Traducción VBulletin por vbulletinhispano.com