3. Entrada de botones

Tutoriales Avanzados Homebrewes

En este tutorial vamos a aprender cómo manejar la entrada de botones de tu PsP y haremos un sencillo programa que mostrará texto en pantalla cuando presionas ciertos botones. Sin la entrada de botones no hay interactuación del usuario, lo cual es bastante aburrido. Sigamos y aprendamos un poco sobre esto ahora. Usaremos comandos que aprendimos en anteriores tutoriales, incluidas las variables. Usaremos menos comentarios en este tutorial y mostraremos otro método de mantener el código ordenado dividiéndolo en secciones.

Uso de la entrada de botones.

Empecemos haciendo una sección que usaremos para las variables. Si quieres usa tu propio diseño en vez de los asteriscos.

-- ***** Variables *****

(Recuerda que pulsando sobre las imágenes las verás a tamaño completo)

Una vez más, necesitamos nuestro objeto color para que podamos escribir en pantalla. Si quieres haz diferentes objetos color, cada uno en su propia línea. Serás capaz de usarlos. Pero dejaré eso para ti. Yo sólo haré uno. (Aprender a hacer cosas por ti mismo es algo positivo).

verde = Color.new(0,255,0)


A continuación vamos a crear variables que almacenarán el texto que se mostrará cuando presionemos un botón. Esto nos dirá que botón has pulsado. Sólo usaremos variables para la mitad de los botones, la otra mitad la mostraremos directamente con el comando print. ¿Por qué? Primero, para que puedas practicar el uso de las variables y, segundo, para ver que ambas formas funcionan bien en un pequeño programa. Vamos a usar diez botones: los de dirección, los de las figuras geométricas y los gatillos.

También vamos a usar el comando print de forma algo distinta esta vez. Cuando mostramos en pantalla qué botón estamos presionando, queremos mostrar el nombre del botón entrecomillado y para ello usaremos comillas simples para entrecomillar el texto completo, en vez de comillas dobles. Si usáramos las comillas dobles el programa pensaría que estamos terminando el texto donde aparezca el nombre del botón.

Hagamos nuestras cinco variables (recordad que dije la mitad).

upPressed = 'Estas presionando el boton "ARRIBA"'
downPressed = 'Estas presionando el boton "ABAJO"'
leftPressed = 'Estas presionando el boton "IZQUIERDO"'
rightPressed = 'Estas presionando el boton "DERECHO"'
LPressed = 'Estas presionando el gatillo "I"'

 

Una vez hecho esto, continuemos. Cada juego que hagas tendrá un bucle principal, es decir, una sección de código que se repetirá indefinidamente hasta que se cumpla una condición, cualquiera que sea. Dentro del bucle hay secciones de código que serán ejecutadas. Algunas de ellas se ejecutarán cada vez que el programa haga el bucle, otras comprobarán si la condición es cierta y entonces elegirá si ejecutar o no ese fragmento de código. Empecemos nuestro bucle.

-- ***** Bucle Principal *****
while true do

A partir de este tutorial en adelante, empezaremos a programar dentro de un bucle, lo cual aún no habíamos hecho. Pongamos ahora algo nuevo dentro: limpiar la pantalla.

screen:clear()

Este comando limpiará la pantalla, borrando todo lo que tuvieras puesto allí. Cada vez que el bucle la ejecute, toda la pantalla será limpiada. Por cierto, estos bucles pasan tan rápido que nunca sabrás que está pasando. Si no limpiamos la pantalla cada vez que mostramos texto, imprimiríamos encima de lo anterior, creando una gran mancha.

Continuemos con otra cosa nueva.

pad = Controls.read()

Esto simplemente leerá la entrada de botón cada vez que el bucle pase. También, date cuenta que pad es una variable y podrías haber usado cualquier otro nombre. Pad parece ser el estándar, por eso lo usaremos.

Es hora de aprender tu primera expresión condicional, la sentencia IF. No es tan malo como suena, créeme. También conoceremos el comando de entrada de botón. Pongamos esto en nuestro programa y después lo explicaré.

if pad:up() then
screen:print(100,100,upPressed,verde)
end

Esto significa "si el botón arriba es pulsado, entonces imprime el texto de la variable upPressed en color verde". Esto devuelve verdadero o falso. Cada sentencia IF comienza por la palabra if, luego una condición para comprobar. En este caso, ¿está siendo el botón arriba presionado?. Lo siguiente es la palabra then, seguida del código que ejecutará si la condición es verdadera. Finalmente la sentencia siempre acaba con la palabra end. Los términos son tan sencillos que puedes leerlos y decir instantáneamente qué se está haciendo. Esto es una breve introducción, más tarde profundizaremos en ello. Ahora vamos a añadir el código para los otros tres botones de dirección y el gatillo I.

if pad:down() then
screen:print(100,100,downPressed,verde)
end
if pad:left() then
screen:print(100,100,leftPressed,verde)
end
if pad:right() then
screen:print(100,100,rightPressed,verde)
end
if pad:l() then
screen:print(100,100,LPressed,verde)
end 

Es el turno de los otros cinco botones. Escribiremos el texto directamente en pantalla con el comando print, para practicar los distintos métodos.

if pad:r() then
screen:print(100,100,'Estas presionando el gatillo "D"',verde)
end
if pad:triangle() then
screen:print(100,100,'Estas presionando el boton "TRIANGULO"',verde)
end
if pad:circle() then
screen:print(100,100,'Estas presionando el boton "CIRCULO"',verde)
end
if pad:cross() then
screen:print(100,100,'Estas presionando el boton "X"',verde)
end
if pad:square() then
screen:print(100,100,'Estas presionando el boton "CUADRADO"',verde)
end 

Ahora acabemos nuestro bucle. Necesitamos mostrar el offscreen buffer en pantalla. Fíjate que el end es el final del bucle while.

screen.waitVblankStart()
screen.flip()
end

Ejecútalo y presiona los botones para ver qué ocurre.

Si te aparece algo similar es porque has realizado el tutorial correctamente

4.666665
Tu voto: Ninguno Votos totales: 4.7 (36 votos)

Anuncios Google

Comentarios

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.
Imagen de DuckZap

Soy aun mas creativo y organizado XD

Bueno aqui les dejo mi postulacion de esos codigos con muchos colores, les recomiendo que tomen los colores les pueden servir Lengua fuera

 

-- DuckZap Proyecto 003 Interaccion Para El Usuario Con Botones
--Variables Para Interactuar

rojo = Color.new(255,0,0)
verde = Color.new(0,255,0)
azul = Color.new(0,0,255)
rosado = Color.new(255,150,200)
amarillo = Color.new(255,255,0)
naranjo = Color.new(255,150,45)
cafeclaro = Color.new(215,150,15)
plomo = Color.new(128,128,128)
morado = Color.new(210,0,210)
xverde = Color.new(0,200,0)
xazul = Color.new(0,125,255)

upPressed = 'Estas presionando el boton "ARRIBA"'
downPressed = 'Estas presionando el boton "ABAJO"'
leftPressed = 'Estas presionando el boton "IZQUIERDO"'
rightPressed = 'Estas presionando el boton "DERECHO"'
LPressed = 'Estas presionando el gatillo "I"'

--Este es el Bucle Principal que se aplicara Continuamente si se cumple su condicion
while true do
screen:clear()
pad = Controls.read()

if pad:up() then
screen:print(100,100,upPressed,amarillo)
end
if pad:down() then
screen:print(100,100,downPressed,amarillo)
end
if pad:left() then
screen:print(100,100,leftPressed,amarillo)
end
if pad:right() then
screen:print(100,100,rightPressed,amarillo)
end
if pad:l() then
screen:print(100,100,LPressed,plomo)
end
if pad:r() then
screen:print(100,100,'Estas presionando el gatillo "D"',plomo)
end
if pad:triangle() then
screen:print(100,100,'Estas presionando el boton "TRIANGULO"',xverde)
end
if pad:circle() then
screen:print(100,100,'Estas presionando el boton "CIRCULO"',naranjo)
end
if pad:cross() then
screen:print(100,100,'Estas presionando el boton "X"',xazul)
end
if pad:square() then
screen:print(100,100,'Estas presionando el boton "CUADRADO"',rosado)
end
screen.waitVblankStart()
screen.flip()
end


DuckZap  - Ayudenme a crear este homebrew del starcraft 2 pero por turnos :3

D

Imagen de auroszxmm

No me funciona...

Buenos tutos, los han hecho increibles! :)

Pero... no se, esto no me funciona. LUA se me ha hecho bien facil de entender, pero, en este tuto me salio algo mal.

Logre tomar una captura del error que sale:

http://imageshack.us/photo/my-images/232/sinttulowvl.png/

Ese es error que salta. Creo que es algo en la variable o la funcion "pad", pero no localizo el error. Les dejo el Codigo(Escrito en el Notepad++):

--   ***/Variables\***
 
rojo = Color.new(255,0,0)
verde = Color.new(0,255,0)
azul= Color.new(0,0,255)
amarillo = Color.new(255,255,0)
plateado = Color.new(192,192,192)
 
upPressed = 'Estas presionando el boton "ARRIBA"'
downPressed = 'Estas presionando el boton "ABAJO"'
leftPressed = 'Estas Presionando el boton "IZQUIERDA"'
rightPressed = 'Estas presionando el boton "DERECHA"'
LPressed = 'Estas presionando el gatillo "L"'
 
 
-- ***/Bucle Principal\***
while true do
screen:clear
pad = Controls.read()
 
if pad:up() then
screen:print(100,100,upPressed,amarillo)
end
 
if pad:down() then
screen:print(100,100,downPressed,azul)
end
 
if pad:left() then
screen:print(100,100,leftPressed,rojo)
end
 
if pad:right() then
screen:print(100,100,rightPressed,verde)
end
 
if pad:l() then
screen:print(100,100,LPressed,plateado)
end
 
if pad:triangle() then
screen:print(100,100,'Estas presionando el boton "TRIANGULO"',amarillo)
end
 
if pad:square() then
screen:print(100,100,'Estas presionando el boton "CUADRADO"',azul)
end
 
if pad:circle() then
screen:print(100,100,'Estas presionando el boton "CIRCULO"',rojo)
end
 
if pad:cross() then
screen:print(100,100,'Estas presionando el boton "X"',verde)
end
 
if pad:r() then
screen:print(100,100,'Estas presionando el gatillo "R"',plateado)
end
 
screen.waitVblankStart()
screen.flip()
end

Bueno, espero me puedan ayudar

PD: Fui creativo y asigne variedad de colores ^^

EDITO: ENCONTRE EL ERROR

Faltaban los () en la funcion screen:clear   ^^' Bueno, uno aprende de los errores :D


Equipos

  • LG Optimus One + ClockWorkMod 5.0.2.7 + IcySnap v1.6 (ICS 4.0.4) + Overclock [Performance/SmartassV2 480min - 748max).
  • NDS Lite Edición Especial Pkmn D&P + R4DS 2GB + WoodR4 1.51.
  • PC: Intel Pentium Dual-Core 1.6Ghz, Intel GMA 950, RAM 1GB, HDD 160 GB + Win7 Ultimate & Archlinux (+Openbox).
  • Apple iPod Touch 4G, iOS 5.1.1, Jailbreak + Tweaks.

Imagen de sault73

muy bueno me ha funcionado a

muy bueno me ha funcionado a la perfeccion crei que seria mas dificil :)

Imagen de luisadniel

muchas gracias, me ha salido

muchas gracias, me ha salido bien, solo que cambie el color de verde a amarillo XD

Imagen de barney77

Te recomiendo

Te recomiendo que programes a Lua Dev.

Imagen de NauTiluS1

ayuda!!!  hice todo como el

ayuda!!!  hice todo como el del tutorial pero lo modifice por mi mismo nose si este bien o mal pero cuando lo ejecuto en la psp me tira error aqui va el code

-- Nautilus1

azul = Color.new(0,0,255)

upPressed = 'Presiono "Arriba"'
downPressed = 'Presiono "Abajo"'
leftPressed = 'Presiono "Izquierda"'
rightPressed = 'Presiono "Derecha"'
LPressed = 'Presiono "Gatillo L"'

while true do
screen:clear()
pad = Controls.read()

if pad:up()then
screen:print(100,100,upPressed,azul)
end

if pad:down()then
screen:print(100,100,downPressed,azul)
end

if pad:left()then
screen:print(100,100,leftPressed,azul)
end

if pad:right() then
screen:print(100,100,rightPressed,azul)
end

if pad:l() then
screen:print(100,100,LPressed,azul)
end

if pad:r() then
screen:print(100,100,'Estas presionando el boton "Gatillo"'
end

if pad:triangle() then
screen:print(100,100,'Estas presionando el boton "Triangulo"'
end

if pad:circle() then
screen:print(100,100,'Estas presionando el boton "Circulo"'
end

if pad:cross() then
screen:print(100,100,'Estas presionando el boton "Equis"'
end

if pad:square()then
screen:print(100,100,'Estas presionando el boton"Cuadrado"'
end

screen.waitVblankStart()
screen.flip()
end

lo hice todo de mi cabeza para aprendermelo no mire el tutorial ni un segundo.


Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP

Imagen de Guillermo_Cornielle

Bueno

Hay varios screen:print los cuales siguen sin cerrarse, les falta el ultimo parentess, y Then debe de ir despegado de toda funcion o condición


Manual del Perfecto Votante Para un voto libre y justo!.

TheGCProjects

Imagen de NauTiluS1

grasias ese era mi problema

grasias ese era mi problema no me habia dado cuenta!!!

ayuda

ayuda no se q estoy haciendo mal me podrian ayudar

el lua player me tira este error:

error: index.lua:32: loop in gettable

este es mi codigo:

-- color
verde = Color.new(0,255,0)

upPressed = 'Estas presionando el boton "ARRIBA"'
downPressed = 'Estas presionando el boton "ABAJO"'
leftPressed = 'Estas presionando el boton "IZQUIERDO"'
rightPressed = 'Estas presionando el boton "DERECHO"'
lPressed = 'Estas presionando el gatillo "L"'
equisPressed = 'Estas presionando el boton "EQUIS"'
trianguloPressed = 'Estas presionando el boton "TRIANGUL0"'
circuloPressed = 'Estas presionando el boton "CIRCULO"'
cuadradoPressed = 'Estas presionando el boton "CUADRADO"'
rPressed = 'Estas presionando el gatillo "R"'
-- ********************************BUCLE PRICIPAL**************************************************
while true do
screen:clear()
pad = Controls.read()
if pad:up() then
screen:print(100,100,upPressed,verde)
end
if pad:down() then
screen:print(100,100,downPressed,verde)
end
if pad:left() then
screen:print(100,100,leftPressed,verde)
end
if pad:right() then
screen:print(100,100,rightPressed,verde)
end
if pad:l() then
screen:print(100,100,lPressed,verde)
end
if pad:equis() then
screen:print(100,100,equisPressed,verde)
end
if pad:circulo() then
screen:print(100,100,circuloPressed,verde)
end
if pad:cuadrado() then
screen:print(100,100,cuadradoPressed,verde)
end
if pad:triangulo() then
screen:print(100,100,trianguloPressed,verde)
end
if pad:r() then
screen:print(100,100,rPressed,verde)
end
screen.waitVblankStart()
screen.flip()
end

Imagen de Dioni0396

lee esto

y comprueba donde te has equivocado 

http://psp.scenebeta.com/system/files/private/script_1.lua

Imagen de tonivans

EXELENTE

eres muy bueno haciendo tutos

aqui esta mi codigo:

-- $$$variables$$$

a = Color.new(120,215,34)
b = Color.new(45,223,56)
c = Color.new(0,255,0)
d = Color.new(56,25,184)
e = Color.new(23,123,65)
f = Color.new(74,284,7)
g = Color.new(32,51,0)
h = Color.new(0,129,4)
i = Color.new(123,212,0)
j = Color.new(76,41,76)

upPressed = 'Estas presionando el boton "ARRIBA"'
downPressed = 'Estas presionando el boton "ABAJO"'
leftPressed = 'Estas presionando el boton "IZQUIERDO"'
rightPressed = 'Estas presionando el boton "DERECHO"'
LPressed = 'Estas presionando el gatillo "I"'

-- ***** Bucle Principal *****
while true do
screen:clear()
pad = Controls.read()

-- sentecias IF

if pad:up() then
screen:print(100,100,upPressed,a)
end
if pad:down() then
screen:print(100,100,downPressed,b)
end
if pad:left() then
screen:print(100,100,leftPressed,c)
end
if pad:right() then
screen:print(100,100,rightPressed,d)
end
if pad:l() then
screen:print(100,100,LPressed,e)
end
if pad:r() then
screen:print(100,100,'Estas presionando el gatillo "D"',f)
end
if pad:triangle() then
screen:print(100,100,'Estas presionando el boton "TRIANGULO"',g)
end
if pad:circle() then
screen:print(100,100,'Estas presionando el boton "CIRCULO"',h)
end
if pad:cross() then
screen:print(100,100,'Estas presionando el boton "X"',i)
end
if pad:square() then
screen:print(100,100,'Estas presionando el boton "CUADRADO"',j)
end

screen.waitVblankStart()
screen.flip()
end

ya he dominado al 100% la parte 1 y 2 ahora por la tres. lo que yo hago
es primero leer y despues actuar y cuando creo que he entendido yo hago
un programita por mi solo (un programa que contenga lo que dice el tuto
obvio) y si me sale mal lo borro y lo vuelvo a hacer hasta que me salgo
pero yo lo hago solo (despues de ller el tuto claro) esque para entender
al 100%

Editado: Crear hilos y comentarios duplicados incumple las Normas de la comunidad, si necesita cambiar su comentario puede usar la opcion de Editar, antes de volver a postear por favor revíse las Normas.| -Viciuz-


Solo quien ha comido ajo puede darnos una palabra de aliento XD XD XD

¿alguien me puede decir que a

¿alguien me puede decir que a mal aqui?

Estoy intentando crear un pequeño homebrew y estoy provando, pero cuando lo inicio con el lua player para windows, la pantalla se abre y se cierra muy rapido...

-- Añado variables
verde = Color.new(0,255,0)
rojo = Color.new(255,0,0)

--Incluyo el mensaje que quiero que aparezca en pantalla
screen:print(20, 20, "Bienvenido a la version 0.2 ", verde)

screen:print(20, 30, "Esta es una ya es algo funcional, asi que", verde)

screen:print(20, 40, "podras usar algunas opciones", verde)

screen:print(20, 50, "Selecciona un idioma", verde)

screen:print(20,70,"Español", rojo)

screen:print(20,80,"Ingles", verde)

screen:print(20,150,"Pulsa HOME para salir", verde)
-- Incluyo el flip
screen.flip()

-- Añado el bucle
while true do
screen.waitVblankStart()
pad = Controls.read()

if pad:up then
screen:print(20,70,"Español", rojo)
screen:print(20,80,"Ingles", verde)
pad = Controls.read()

if pad:down then
screen:print(20,70,"Español", verde)
screen:print(20,80,"Ingles", rojo)
pad = Controls.read()
end

Yo te ayudo xD

Yo te puedo ayudar y mostrarte mi solución quizás no es la mejor pero no tengo mucha lógica de programación pero espero ayudarte

1. No has cerrado las condiciones if solo tienes un end deberían de ser 3 por que tienes que cerrar el bucle y las dos condiciones if

2. No has puesto los paréntesis en la comparación de los botones pad:up debería de ir pad:up() también con el otro; pad:down() 

ahora mis consejos xD Pon el screen.flip() en el bucle infinito para que se este ejecutando cada ves que se corre el bucle , coloca lo que quieres que aparezca en pantalla adentro del bucle también xD por que lo que quieres hacer es que se cambie el color de una selección como un menú, entonces necesitas que se este corriendo a cada momento por una actualización o cambio de color como lo que tu quieres :) también borra las lecturas del teclado por que ya la estas leyendo arriba al principio del bucle las demás son innecesarias para lo que quieres hacer; te dejo el código para que lo revises saludos

-- Añado variables
verde = Color.new(0,255,0)
rojo = Color.new(255,0,0)
 
-- Añado el bucle
while true do
screen.waitVblankStart()
pad = Controls.read()
 
--Incluyo el mensaje que quiero que aparezca en pantalla
screen:print(20, 20, "Bienvenido a la version 0.2 ", verde)
 
screen:print(20, 30, "Esta es una ya es algo funcional, asi que", verde)
 
screen:print(20, 40, "podras usar algunas opciones", verde)
 
screen:print(20, 50, "Selecciona un idioma", verde)
 
screen:print(20,70,"Español", rojo)
 
screen:print(20,80,"Ingles", verde)
 
screen:print(20,150,"Pulsa HOME para salir", verde)
 
if pad:up() then
screen:print(20,70,"Español", rojo)
screen:print(20,80,"Ingles", verde)
end
 
if pad:down() then
screen:print(20,70,"Español", verde)
screen:print(20,80,"Ingles", rojo)
end
 
screen.flip()
end

No se porqe pero cuando

No se porqe pero cuando ejecuto el script en el LuaplayerHm10 dice:

an error has occured.

..../script.lua:16.000000:calling 'clear' on bad self (string expected, got table)

estoy checando el script pero no hayo el error

 edit:solo pasa en es en el luaplayer v0.20(norecuerdo si el ultimo luaplayer qe salio) si me va

saludos


carring my fabulous psp everywhere is the best...more when i got my music and favorite homebrews yeah!!!

creo que es porque en luahm

creo que es porque en luahm 10 no es screen:clear() creo que es diferente pero la verdad es que no lo se

ok

bueno muchas gracias por la aclaracion.

sigo con este exelente tutorial para lua y despues si me interesa vera las diferencias con el luahm

 


carring my fabulous psp everywhere is the best...more when i got my music and favorite homebrews yeah!!!

Imagen de mpm88

Todo Bien

Lo Probe Y jala perfecto gracias por tu aporte

Imagen de Duende68

Problema

Ola a mi me dice:

Error: SCRIPT.LUA:13: attempt to index global 'Control' (a nil value) 

Press start to restart

 

Aqui pon go mi programa:

-- ***** Variables *****
verde = Color.new(0,255,0)

upPressed = 'Estas presionando el boton "ARRIBA"'
downPressed = 'Estas presionando el boton "ABAJO"'
leftPressed = 'Estas presionando el boton "IZQUIERDO"'
rightPressed = 'Estas presionando el boton "DERECHO"'
LPressed = 'Estas presionando el gatillo "L"'

-- ***** Bucle Principal *****
while true do
screen:clear()
pad = Control.read()

if pad:up() then
    screen:print(100,100,upPressed,verde)
end
if pad:down() then
    screen:print(100,100,downPressed,verde)
end
if pad:left() then
    screen:print(100,100,leftPressed,verde)
end
if pad:right() then
    screen:print(100,100,rightPressed,verde)
end
if pad:l() then
    screen:print(100,100,lPressed,verde)
end
if pad:r() then
    screen:print(100,100,'Estas presionando el gatillo "D"',verde)
end
if pad:triangle() then
    screen:print(100,100,'Estas presionando el boton "TRIANGULO"',verde)
end
if pad:circle() then
    screen:print(100,100,'Estas presionando el boton "CIRCULO"',verde)
end
if pad:cross() then
    screen:print(100,100,'Estas presionando el boton "X"',verde)
end
if pad:square() then
    screen:print(100,100,'Estas presionando el boton "CUADRADO"',verde)
end
    screen.waitVblankStart()
    screen.flip()
end

 

Gracias por escuchar.

 

 

 

EDITO: Solucionado me habia comido la "s" de controls.


              Mod VS Spammer"Si Se Puede Soñar, Se Puede Lograr"

               ¿Quieres Un IPad 2 Gratis? Pasate por aqui.

Imagen de DarK-TewiE

yo...

yo le he agregado 2 botones mas el select y el start ahora cuando los pulse me sale ke los e pulsado jeje que bien voy aprendiendo jeje, e tenido un par de fallos tontos como que me comido una palabra y escrito algo mal pero lo logre jeje al apartado 3 quiero decir al 4


Imagen de NightKnight

esto es simplemente un

esto es simplemente un button tester, con razon ay mas de 20 jeje, we lo q importa es la intencion de ayudar, gracias por el tuto me ayuda mucho me queda mas de 30 minutos asi q entrare al 4

Imagen de RuGuEr

He intentado corregir mi

He intentado corregir mi error, pero no lo logro. Pueden ayudarma?:

 

-- !!!Variables!!!
azul = Color.new(0,0,255)
 
upPressed = 'Estas presionando el boton "ARRIBA"'
downPressed = 'Estas presionando el boton "ABAJO"'
leftPressed = 'Estas presionando el boton "IZQUIERDO"'
rightPressed = 'Estas presionando el boton "DERECHO"'
LPressed = 'Estas presionando el gatillo "L"'
 
-- !!!Bucle Principal!!!
while true do
screen:clear()
pad = Controls.read()
 
if pad:up() then
	screen:print(100,100,upPressed,azul)
end
if pad:down() then
	screen:print(100,100,downPressed,azul)
end
if pad:left() then
	screen:print(100,100,leftPressed,azul)
end
if pad:right() then
	screen: print(100,100,righPressed,azul)
end
if pad:L() then
	screen:print(100,100,LPressed,azul)
end
if pad:r() then
	screen:print(100,100,'Estas presionando el gatillo "R"',azul)
end
if pad:triangle() then
	screen:print(100,100,'Estas presionando el boton "Triangulo"',azul)
end
if pad:cross() then
	screen:print(100,100,'Estas presionando el boton"X"',azul)
end
if pad:circle() then
	screen:print(100,100,'Estas presionando el boton"O"',azul)
end
if pad:square() then
	screen:print(100,100,'Estas presionando el boton"cuadrado"',azul)
end
screen.waitVblankStart()
screen.flip()
end

 

 


Ruguer el duro.

Imagen de burnxez

Cual es el error

¿Qué error te tira el player?

Imagen de RuGuEr

ErroR: Script.lua25:

ErroR: Script.lua25: unexpected symbol near 's'

 

Antes me salian otros pero los reparé. He mirado los dos códigos y son totalmente iguales y nada

 

EDITO: No se por que pero el otro si me carga de los mas bien.

 

EDITO2: Lo solucione. (creo que mientras lo arreglaba, meti el archivo antiguo al lua player y no el reparado.


Ruguer el duro.

Imagen de Molo Johny Banana

Listo

Ahora veo por que todos hace un button tester, jaja pero yo no hare eso, asi que al steep 4!!!

Imagen de noisebird

una duda que tengo es que no

una duda que tengo es que no se como hacer mis eboots solo e echo estos ejemplos y los reproduzco con el luaplayer de windows agrede seria si alguien me saca de mi ignorancia 


gracias a tsukuyomi mXc por el avatar 

Imagen de hhuanag

una duda como veo mis scritp

una duda como veo mis scritp en la psp?

Imagen de krx.13.vk

Necesitas la PSP liberada, y

Necesitas la PSP liberada, y el Lua Player hm8 o la version que uses. Yo uso la 7. Luego metes el eboot.pbp con el script.lua y en teoria debería de funcionar.
Saludos

Imagen de Infected ?

Buenas, no se que estoy

Buenas, no se que estoy haciendo mal XD ya le di la revisada y no encuentro el error, ya hasta le modifique valores y todo lo que decia y nada compare con el del tutorial y nadamas cambian los colores y lo que dice:

--=-=-=Variables=-=-=
 
rojo oscuro = Color.new(81,0,0)
cyan = Color.new(64,225,221)
verde rarito = Color.new(7,163,21)
blanco = Color.new(255,255,255)
azul extremo = Color.new(5,18,177)
rojo = Color.new(255,0,0)
verde = Color.new(0,255,0)
 
upPressed = 'Puchando el boton "ARRIBA"'
downPressed = 'Puchando el boton "ABAJO"'
leftPressed = 'Puchando el boton "IZQUIERDO"'
rightPressed = 'Puchando el boton "DERECHO"'
LPressed = 'Puchando el gatillo "l"'
 
-- _+* Bucle Principal *+_
while true do
screen:clear() 
pad = Controls.read() 
 
if pad:up() then
screen:print(100,100,upPressed,cyan)
end
if pad:down() then
screen:print(100,100,downPressed,rojo oscuro)
end
if pad:left() then
screen:print(100,100,leftPressed,verde rarito)
end
if pad:right() then
screen:print(100,100,rightPressed,blanco)
end
if pad:l() then
screen:print(100,100,LPressed,azul extremo)
end
if pad:r() then
screen:print(100,100,'Presionando el gatillo "r"',azul extremo)
end
if pad:triangle() then
screen:print(100,100,'Presionando el boton "TRIANGULO"',verde rarito)
end
if pad:circle() then
screen:print(100,100,'Presionando el boton "CIRCULO"',blanco)
end
if pad:cross() then
screen:print(100,100,'Presionando el boton "X"',cyan)
end
if pad:square() then
screen:print(100,100,'Presionando el boton "CUADRADO"',rojo oscuro)
end
screen.waitVblankStart()
screen.flip()
end

Si me podrian ayudar, muchas gracias :D


Alguien sabe donde esta la SA??? (SceneBiteros Anonimos (53 Users)

Pues muy sencillo. Las

Pues muy sencillo. Las variables no pueden estar formada por dos palabras ej.: verde oscuro, la deberias poner así: verdeoscuro.


                                                                          No cuesta nada agradecer!!!

Imagen de Infected ?

con razon, pense que era eso

con razon, pense que era eso pero no lo intente, gracias amigo :D

Saludos desde Tijuas, Mexico

Imagen de ALAMEDA

hola que tal?

hola pues tenia un problema que no entendi bien y si me podiais aclarar segui los paso y puse al principio una variable :

LPressed = 'estas presionando el boton "L"' vale y despues ala hora de poner los if puse este :

if pad:L() then
screen:print(100,100,LPressed,verde)
end

me daba un error y despues lo puse en minuscula la l y ya funciona no entiendo porque si alguien puede explicarme , y tambien no me entere muy bien lo de porque hay que poner las comillas y las comillas dobles gracias


Historias van historias vienen todos saben nada, las suposiciones por cientificas que sean pueden ser erradas...

Eso es porque en lua esos

Eso es porque en lua esos botones se escriben con minuscula. Lo de la doble comillas es simplemente para que aparezca el texto en el cual la X aparezca entre comillas. 

Ejemplo:

'Estas pulsando "X" deja de pulsar' --> Estas pulsando "X" deja de pulsar


                                                                          No cuesta nada agradecer!!!

Imagen de Monty - Calabato64

Imagen

Hola, me interesa cargar imagenes.

X = Image.load("./X.png")

triangulo = Image.load("./triangulo.png")

boton = Image.load("./boton.png")

etc.

current = boton

while true do

if pad:cross then

X

end

if pad:square then

quadrado

end

etc.

 

Pero lo que quiero saver es como hacer que al solotar X, de la imagen x.png vuelva a boton.png

Y no me digais borrar pantalla porque entonces me quita la imagen


- Monty (anteriormente, Calabato64)

Si entiendo pero:

Como lo ejecuto para verlo en el psp es que no entendicomo en el tutorial, por que intento abrir en lua player en mi psp el que dice: lua player 0.20 y sale imposible ejecutar y yo quiero ver lo que llevo para ver si estoy bien.

gracias


WO0o0ow!

Imagen de CkFra

Dinos

tu tipo de PSP, versión y qué luaplayer te estás bajando

Saludos 

Imagen de Loopin

que pasos hay que seguir

que pasos hay que seguir exatamente para ejecutar los scripts en la PSP?? por que las carpetas luaplayer, y luaplayer% no existen y si las creo aparecen como datos dañados

EDITO: ya lo he conseguido, Pana me paso un eboot. :P

saludos


Imagen de jjdrako

una pregunta

me ha pasado al lua para probar a hacer cosas en la psp, ya que no hace mucho sacaron lua para ps2, asi que mi pregunta viendo que has puesto todo en condicionales if, en lua no existe el switch por si tienes multiples casos???


Imagen de ELeNDeR

Pues me temo que no hay nada

Pues me temo que no hay nada parecido al Switch de C en Lua, pero puedes concatenar tantos IFs como quieras. Saludos.


Imagen de duende

estaria bien una version

estaria bien una version para ver en off-line

Imagen de Miquel Carol

Si lo que quereis es probar como funciona

Habra que hacer un tutoria de como cargar los programas en lua. Porque el script.lua para ejecutar esta colgado al final de la noticia. Solo debeis pinchar para descargar.


Imagen de ELeNDeR

Pues tienes toda la razón,

Pues tienes toda la razón, Abismo, pensé que ya se había explicado cómo lanzar tu script.lua dentro de la PsP pero veo que no. Realmente no sé si hace falta un tutorial para esto, porque es bastante sencillo. Simplemente hay que copiar las carpetas luaplayer y luaplayer% en la ruta PSP/GAME/ y el script.lua dentro de la carpeta luaplayer (la que no lleva el %). Así al arrancar el LuaPlayer se ejecutá automáticamente el script sin necesidad de cargar nada manualmente. En caso de que no se pusiera el archivo script.lua en el lugar correcto se lanzaría automáticamente el Lowser (un "browser" para aplicaciones Lua hecho en Lua). Eso es todo, si tenéis más dudas, preguntad y os intentaré ayudar en lo que pueda. Saludos.

Imagen de mordi

Para lanzar desde Lowser

Una manera mas  comoda es la de dentro de la carpeta luaplayer esta la carpeta applications si dentro de esta creamos una carpeta con el nombre de proyecto que queramos y dentro ponemos nuestro programa con el nombre de index.lua se arrancara desde el lowser y nos permitira volver a este al finalizar la ejecucion, de tal manera que si queremos correjir algo podremos usar otras aplicaciones  como el editor de textos de lua Twin Tail LDE para volver a lanzar nuestra aplicacion.

Saludos 

 

 

--flotaré, como patitos de goma en el agua estancada de la vida--


¡Un verdadero guerrero Klingon nunca utiliza comentarios en su código!

Imagen de THORNE

una duda

en el script que bajo de aqui tienen los screen 8 espacios antes de apuntarlos y los otros tambien es nesezario los espacios verdad y como se cuando llevan ese tipo de espacios y cuantos algunos son mas que otros nose si me entiendan soy nuevo y todo hiba bien asta esto, suerte y gracias

EDITADO: ya pude con espacios o sin ellos corre la aplicacion , estaba haciendo mal otras cosas xD


<Descargar un Homebrew de BETA, gratis. Visualizar un tutorial, gratis. Iniciarse en la programacion LUA en español, gratis. Colaborar a que la scene PSP en espa&

Imagen de ELeNDeR

Cuando hablas de "espacios"

Cuando hablas de "espacios" supongo que te refieres a la tabulación que hay delante de los "screen". Yo te recomiendo que siempre uses tabulaciones porque así el código gana en claridad y permite ver a primera vista que instrucciones pertenecen a cada bucle. Ya has comprobado tú mismo que tanto si pones tabulaciones como si no, el programa funciona igualmente, pero como te dije antes, es más que recomendable que siempre tabules tu código. Saludos.

Imagen de Miquel Carol

Mira a ver si puedes editar

El ptimer tuto de lua, para que aparezca, esres propietario de la noticia y deberias poder. En caso negativo dime algo y lo edito yo. Ya que puede parecere un poco confuso. aprobecho, no seria mejor iniciar nuestro homebrew lua en una carpeta dentro de applications como se hace con los homebrew normales¿?

Lo digo para fomentar un estandard de estructura que nos permita tener una version final como las que suelen colgar los ingleses, con posibilidad de tener ICO en un futuro y todo.


Imagen de ELeNDeR

Como me has pedido, Abismo,

Como me has pedido, Abismo, he puesto esto en la introducción de la serie de tutoriales, aunque releyendo los siguientes tutoriales, en el primero ya aparecía la forma de cargar los scripts en la psp. No importa, creo que queda mejor en la introducción. Saludos.

Imagen de Unicorn

Gran explicacion

Muy detallada Elender. A ver si tengo un ratito y me pongo al dia en el tuto C y empiezo a trastear un poco con Lua (este cuatrimestre tengo clase de programacion otra vez, a ver si refresco ideas y me pongo a ello )

1 saludo!!! 


Para recibir ayuda más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda revisar el Manual del perfecto forero y las Normas de la Comunidad.

if pad:square() then

if pad:square() then
screen:print(100,100,'Estas presionando el boton "CUADRADO"',verde)
end

en los parentesis no ke va no hay un igual? Perdonenme solo se visual basic
¿y no es end if?

Imagen de ELeNDeR

Para N2iiDer

Cada lengua de programación tiene su sintaxis, es decir, se escribe de una forma distinta. En LUA no se pone end if como en VB ni tampoco se pone un igual en los paréntesis. Está todo el código comprobado por mí y funciona al 100% tal como aparece.

Imagen de david_gv

kiero ke por ejemplo escrivo

kiero ke por ejemplo escriva un texo i ke al pulsar X salga otro texto, entonces seria,

ejemplo:

if pad:scross() then
screen:print(5, 60, "No puede ser asi",rojo)
end

pero si pongo eso i le doi a la X no pasa nada :S, ke tengo ke poner exactamente?

saludos


[img]http://img137.imageshack.us/img137/3500/mehishdvna9.png[/img]

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.