Anuncios Google

2. Variables en LUA

Tutoriales Avanzados Homebrewes

En este tutorial vamos a aprender como usar variables en tus programas. Las variables son muy importantes y llegarán a ser unas de nuestras mejores amigas. Puedes pensar que las variables son almacenes que guardan información que tú puedes llamar en cualquier momento en tu programa.

Escribir un sencillo programa que usa variables.

Ahora vamos a hacer un sencillo programa que usará algunas variables. También aprenderemos como hacer aritmética simple en Lua. Esta vez comentaremos cada lí­nea de nuestro código.

Empecemos otra vez creado un objeto color, el cual usaremos para mostrar nuestra información por pantalla. Esta vez usemos el color verde.

-- Objeto Color Verde
verde = Color.new(0,255,0)

*Picha sobre la imagen para agrandar

Ahora crearemos nuestra primera variable. Usaremos la variable para almacenar tu año de nacimiento. Pon tu propio año de nacimiento en vez de 1981, lo recomiendo.

-- Almaceno el año de nacimiento en la variable AnnoNacimiento
AnnoNacimiento = 1993

*Picha sobre la imagen para agrandar

Lo que hemos hecho es tomar el número 1981 (o tu año de nacimiento si lo has puesto) y almacenarlo en la variable llamada AnnoNacimiento. Usaremos esta variable más tarde en nuestro programa.

Hagamos otra variable, debajo de la anterior, que almacenará el año actual.

-- Almaceno el año actual en AnnoActual
AnnoActual = 2007

*Picha sobre la imagen para agrandar

Ahora creamos otra de una forma diferente.

-- Creo una variable vací­a
miEdad = nil

*Picha sobre la imagen para agrandar

Esta vez hemos asignado el valor nil a la variable. Esto simplemente significa que nada es asignado a la variable aún. Almacenaremos algo más tarde.

Vale, ahora vamos a crear la última variable simplemente para mostrar que también se pueden almacenar cadenas de texto al igual que números. Lo haremos encerrando el texto entre comillas.

-- Almaceno texto en una variable
texto = "Mi edad es aproximadamente: "

*Picha sobre la imagen para agrandar

Estoy seguro de que has entendido como se crean variables, así­ que vamos a usarlas.

Esto es lo que vamos a hacer con este programa: vamos a usar nuestras variables y matemáticas básicas para calcular tu edad. Así­ que adelante y añade este código a tu programa.

-- Resto AnnoNacimiento a AnnoActual y lo almaceno en miEdad
miEdad = AnnoActual - AnnoNacimiento

*Picha sobre la imagen para agrandar

Esto tomará el valor almacenado en AnnoNacimiento, lo restará de AnnoActual y lo almacenará el resultado en la variable miEdad. Así­ le habremos asignado un valor a miEdad.

Ahora usemos el comando print que vimos en la pasada lección para mostrar por pantalla nuestra variable de texto

-- Mostramos nuestra variable de texto en pantalla
screen:print(100,100,texto,verde)

*Picha sobre la imagen para agrandar

Lo único diferente respecto a la última vez que usamos esto es que estamos mostrando la información que contiene una variable en vez del texto directamente. Fijaos en que las comillas no son necesarias. Por lo tanto, se mostrará por pantalla el texto almacenado en texto en verde en la posición X=100,Y=100. Vamos a querer mostrar el resultado de nuestra edad al lado de esta lí­nea, así­ que aprendamos un nuevo y simple comando. Para imprimir miEdad a la derecha del texto de la variable texto podemos usar dos puntos suspensivos (..). Esto se llama concatenación. Por lo tanto, CAMBIA el último fragmento de código para ponerlos.

-- Mostramos nuestra variable de texto y la edad en pantalla
screen:print(100,100,texto .. miEdad,verde)

*Picha sobre la imagen para agrandar

Por último, añadamos screen.flip() y el bucle para acabar nuestro programa.

-- Buffer offscreen to onscreen
screen.flip()
-- Bucle infinito
while true do
screen.waitVblankStart()
end

Guarda tu programa y lánzalo para ver el resultado.

Gracias al uso de estas variables, podemos cambiar AnnoNacimiento y el programa automáticamente calculará la edad de otra persona. Sin variables tendrí­as que cambiar múltiples (a veces miles) de lí­neas de código en algunos programas.

En este tutorial sólo hemos usado la resta. Para ello simplemente hemos usado el signo (-) tal como aprendimos en el colegio. Para la suma usaremos (+), para la multiplicación (*) y para la división (/).

4.809525
Tu voto: Ninguno Votos totales: 4.8 (21 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.

Una molestia:

Ya hize todos los pasos para este tutorial, pero desafortunadamente tengo un problema y es el siguiente  (xxx).lua:29:´=´ expected near ´true´ es lo que me aparece en la consola de errores;

diculpen la molestia y agradesco de antemano a quien se tome la molestia de responder a mi pregunta

Imagen de tonivans

EXELENTE TUTO

muy buen tuto, eres el mejor amigo, lo explicas todo bien y hasta con imagenes.

ya hiba en el 8 pero me regrese desde el uno para repasar, bueno adios y muchas gracias.

oye esta exelente pero creo que te falto explicar una cosa con la que me
he roto la cabeza o no se si la explicaste pero es que el nombre de las
variables no puede llevar espacio hehe bueno exelente tuto

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

aaaaaaaaaaaaa

muchas gracias, gracias a eso he encontrado lo que buscaba, ahora ya se, que se pude ponerx = x + -10, eso era todo, mirad, como me queda:

--variables -->

n = 10 x = 10 y = 10 s = 10

--bucle -->

 while true do

screen:clear()

x = x + n

y = y + s

screen:print(x,y,"hola",rojo)

if x > 400 then

n = -10

end

if x < 0 then

n = 10

end

Imagen de pspgorrister

Pero ahí no tienes en cuenta

Pero ahí no tienes en cuenta la "dirección" de la bola para ir hacia un lado u otro, mira mi post de más abajo.

mm

yo estoy practicando y quiero que la coordenada x cada vez que se ejecuta el bucle se le sume o reste 10, entonces, quiero que empiece sumando y con if  (si) llega a 400 cambie el signo a - y empiece a quitar 10 --> , x = x signo 10 

basicamente quiero que o bien rebote contra la pared la palabra, o haga círculos

enseñame :) xd y gracia spor la respuesta

 

edito: ya lo he conseguido aunque de una forma rara y enrevesada que me e inventado, pondre mi primer lua el el foro para que lo veais es una chorrada pero asi me podeis recomendar cosas

 

Imagen de sting18

Solo usa un contador tu mismo

Solo usa un contador tu mismo dices que es lo que quieres si lo puedes escribir lo puedes hacer

if  (si) llega a 400 cambie el signo a - y empiece a quitar 10 --> , x = x signo 10 -- aqui tu mismo dices que hacer solo aslo con codigo usa el time a "0" y ya pones lo que esplicas if time == 400 then ya usas las variables de quitar y listo


sigo

sigo sin entender esa forma... yo si hago:

if x >= 400 then

--y ahora que pongo?

si pongo: x = x - 5       se quedaria pegada a la pared rebotando si marcharse

si pongo: x = x - 400    no rebotaría, sólo al llegar a la pared volvería a empezar

si uso lo de signo y pongo:  signo = -    ya me han dicho que no se puede usar como expresiones asi que no me serviría tampoco

la unica opción que SE ME ocurre, es lo que he conseguido, está el script en el foro, pero es muy largoi para algo que parece tan simple

Imagen de pspgorrister

Quieres que "algo" se mueva

Quieres que "algo" se mueva de forma positiva o negativa según su posición, sino he entendido mal.

Si ese es el caso, vamos a plantearnos qué parámetros vamos a tocar:

  • despl: El desplazamiento, que puede ser negativo o positivo en incrementos de X (en este caso creo que quieres 10)
  • pos_pared_izda y pos_pared_dcha: Las posición de las paredes, o lo que es lo mismo, los lados de la pantalla, vamos a suponer que son 80 y 400 (no sé si quieres dejar 80 por cada lado, tienes un menú lateral en un sólo lado... eso es lo de menos)
  • posicion_actual: La posición del objeto que se mueve, en este caso su coordenada X (la columna).

posicion_actual = 100; --Empezamos por ejemplo en la posición 100
despl = 10; --Ponemos un desplazamiento hacia la derecha por defecto
pos_pared_izda = 80;  --Límite de la pared izquierda
pos_pared_dcha = 400; --Límite de la pared derecha
--Aquí empezaría un bucle
   --(....) Otras supuestas intrucciones
   -- Si se desplaza a la izda. y ha llegado a la pared, cambiar desplazamiento
   if despl < 0 and posicion_actual <= pos_pared_izda then despl = 10;
   -- Si se desplaza a la dcha. y ha llegado a la pared, cambiar desplazamiento
   if despl > 0 and posicion_actual >= pos_pared_dcha then despl = -10;
   -- Actualizar la posición
   posicion_actual += despl;
   -- (.....) Otras supuestas instrucciones
--Aquí termina el bucle

 


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

hola

No consigo guardar un simbolo en una variable creo que no se puede

signo = +

num = num signo 5

que puedo hacer como alternativa a eso?

Imagen de pspgorrister

OMG!   ¿Pero para qué

OMG! Sorprendido

 

¿Pero para qué quieres convertir un signo (en realidad se llama operador) en una variable para luego volver a tratarlo como un operador?

 

No consigo guardar un simbolo en una variable creo que no se puede

Puedes guardar "+" en una variable pero se tratará como un texto, igual
que si fuera "a", "pepito perez", etc.

 

que puedo hacer como alternativa a eso?

La alternativa es que uses el operador "+", cuando vayas a sumar.

 

 


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de NightKnight

Gracias por los tutos aora

Gracias por los tutos aora voy por el 3

Imagen de Guitripio

error en la...

linea 15,eso me dice en mi psp..!!! el lua

con la variable NIL,ya lo trate de corregir y me sale lo mismo...!!!!

o es que debo crear un .cmd,para cada script que hago..?

ayuda por favor..!!!

Error: SCRIPT.LUA:15: attemp to perform arithmetic on global AnnoActual (a nil value)

press start to restart.

ese es el mensaje que me aparece en mi psp...hay alguna solucion...?

 

Disculpen la molestia,ya lo solucione,se me olvido escribir en la linea 15 miEdad,verde,jajajaa

ahora practicare mas este ejemplo o ejercicio,como quieran llamarle, y luego seguire con el sigueinte paso.

saludos y gracias al ó los creadores de estos tutos.........  Risa

 y en special a Ricks80    -- Gracias carnalito......

 


===========

2 Pasos a la libertad.

sudo apt-get remove Windows
sudo apt-get install Gnu/Linux

==================================================

Linux se crea y no se destruye, solo se transforma.

Imagen de RuGuEr

Gracias de nuevo FMA...

Gracias de nuevo FMA... recuerdo que hace años trate de programar con este mismo tuto (pero me lo habias pasado por msn). Ahora si las cosas me van funcionando.


Ruguer el duro.

Imagen de Molo Johny Banana

Yeah!

Terminado, a lo que sigue.

Muy buenos tutos en verdad

Imagen de LaloerkZ100

error

tengo un error en la variable nil ejecuto el script y dice esto:

error: script2.lua:5: attempt to index global 'color' <a nil vaule>

me ayudas porfas mandame un mp va?


Ser útli para ser fuerte...

Pues facil, lo que has

Pues facil, lo que has puesto despues de la variable color o lo que es lo mismo lo que as puesto depués de color = está mal escrito.


                                                                          No cuesta nada agradecer!!!

De nuevo

De nuevo te doy las gracias por este tuto!!

 

Mi edad es aproximadamente: 15

es nesesario poner de otro

es nesesario poner de otro color algunas palabras ????

Las palabras cambian de

Las palabras cambian de color segun su funcion o significado (suponiendo que usas Notepad++)

Imagen de arima_kun

no me queda claro...

no me quedo claro para que sirve el nil

yo hice el ejercicio del ejemplo y luego puse otro y no me di cuenta de que no tenia la variable vacia y aun asi me lo pone bien 

AnnoNacimento = 1986
AnnoActual = 2008
miEdad = nil
texto = "mi edad aproximada es: "
miEdad = AnnoActual - AnnoNacimento
screen:print(25, 125, texto ..miEdad, blanco)

valor1 = 25
valor2 = 25
texto = "25 multiplicado por 25 es igual a: "
resultado = valor1 * valor2
screen:print(25, 150, texto ..resultado, rojo)

entonces para que sirve hacer una variable vacia?

 


Te gusta el DjMax visita mi canal en youtube

No respondo dudas por mensaje privado,  usa los foros. &

Imagen de Guillermo_Cornielle

El nil

Es digamos nada, nulo, vacio.

Creaste la variable miEdad = nil, vacia, pero despues hiciste los siguiente:

miEdad = AnnoActual - AnnoNacimiento.

Lo que hiciste ahi es darle a la variable miEdad, el resultado de la resta de AnnoActual - AnnoNacimiento.

El nil sirve para ''vaciar'' una variable y dejarla sin valor, vacia, si quieres hacer limpieza utiliza el collectgarbage() despues de las variables de valor nil.

Un saludo y espero que te haya quedado claro.


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

TheGCProjects

Imagen de arima_kun

jajaaja como esta eso?

gracias por la respuesta ya quedo un poco mas claro pero..

entoces creo la variable y si le doy el codigo (= nil)  la unulo.

caundo la vuelvo a crear (si es que la vuelvo a crear) ahi si le doy valor

pero es algo completamente inecesario no?

para que creo variables vacias que van a ocupar mas espacio en el codigo...

mejor no lo pongo y ya no?


Te gusta el DjMax visita mi canal en youtube

No respondo dudas por mensaje privado,  usa los foros. &

Imagen de sport

una pregunta!!

Oye hermano, me podrias decir como puedo sincronizar el reloj del psp con una variable, algo asi como una alarma, no se si me explique.

De antemano gracias!!!!!!!


Puro Hueso--39--Fortera

Imagen de yoan03

buen tuto

cada dia me inspiro mas para seguir en el lua gracias por todo hermano.

Imagen de CkFra

Me gustaría añadir algo...

Creo que en el tuto no viene, asi que lo pongo para completar información ;) Para que no os pase como a mí que me vuelvo loco cuando no se que es lo que tengo mal puesto! xD

El nombre de las variables no pueden tener espacios, sino no arranca el archivo.

Y también que LUA, diferencia entre Mayúsculas y minúsculas. Vamos que si en una variable tenemos:

Mes = tabla[1]

- Hay que escribir Mes, no mes, ni MES.

screen:print(100, 100, Mes, blanco)

Edito: Lo de que diferencia entre may y min sí lo dice... Pero no está mal recordarlo :P

A lo mejor soy yo el único tonto que no lo sabía pero bueno, aquí lo plasmo :D

Saludos

Para Elender: Si pasas por aquí, si lo ves necesario, subelo. Gracias

 

Imagen de miguel17693

Arreglado!

screen:print(100,100,texto .. miEdad,verde)

 

a mi asi no me funcionaba asike intente con...   

screen:print(100,100,"texto" .. miEdad,verde)

y ya me funcionaba

PD:antes de probar con eso probe mil cosas mas xD 

Imagen de -Ermac-

a mi si me funciona

screen:print(100,100,texto .. miEdad,verde)

porque estamos utilizando una variable y al poner eso haces que en vez de que aparezca "Mi edad es aproximadamente: " aparecera la palabra texto


rooтѕ rocĸ reggae ♪♫

Imagen de jjdrako

otra duda

lo de que no haga falta poner el tipo de variable no es en el primer lenguaje que pasa, en actionscript de flash tampoco hace falta

otra duda es, aqui existen variables globales y locales o no entiende este lenguaje de eso


Imagen de Daithör

pregunta: ¿El lenguaje lua

pregunta: ¿El lenguaje lua distingue entre cadenas de caracteres, carateres, entero...? Lo pregunto por que como no se declara el tipo de variable y solo utilizas enteros pues me deja un poco loco...

Imagen de crashoverburn

Si no me equivoco

lo distingue cuando le das el valor a la variable. Por ejemplo:

variable = 198 (asi introduciriamos un numero, luego tendremos una variable nuemrica (int probablemente))

variable = "198" (asi introcudiriamos un texto, luego tendremos una variable de cadena de caracteres (string))

Solo se me ocurre esto, prueba y nos cuentas ;).


"Cuando la oscuridad nuble tu vista, que la paranoia sea tu guia."


Por favor, leeros las normas antes de postear y buscad en F.A.Q. antes de preguntar.

Imagen de ELeNDeR

Exacto, Crash. El lenguaje

Exacto, Crash. El lenguaje LUA es muy flexible y no hay que especificar el tipo de las variables que declaras.


Imagen de Daithör

Tio, eres increible, no hago

Tio, eres increible, no hago mas que poner el mensaje y ya me has contestado, como me sigas enseñando cosas te voy a tener que pagar... XD

Imagen de crashoverburn

Jajaja

yo he tenido grandes maestros (varios son parte del Staff) y nunca me han pedido nada por los conocimientos que me han transmitido, tranquilo intento ayudar a todo el que puedo sin cobrar nada a cambio ;).

Ha coincidido que ahora estoy revisando Beta y por eso he tardado tan poco, pero dentro de poco tendre que irme y hasta la noche o madrugada no podre volver.


"Cuando la oscuridad nuble tu vista, que la paranoia sea tu guia."


Por favor, leeros las normas antes de postear y buscad en F.A.Q. antes de preguntar.

Pos no se yo

El primer paso me salio genial, era muy facil, pero en el segundo al cargar el cmd, me va a abrir el .lua y se cierran los dos.

Por que puede ser?


Si quieres tener a un tonto entretenido lee la siguiente frase.

Si quieres tener a un tonto entretenido lee la siguiente frase.

Si quieres tener a un tonto entretenido lee la primera frase.

Imagen de pucelano

Supongo que estas utilizando

Supongo que estas utilizando el LUAPlayer para windows, para probar el script. Dale un vistazo a este manual:

http://beta.pesepe.com/story/lua-player-para-windows

Alli verás, que añadiendo al final del fichero .cmd un línea con el texto pause, conseguirás que se muestre el error que se ha producido. Esto te indicará donde está el fallo.

Si no consigues averiguar donde está el fallo, indícanos que mensaje de error te sale, y que pone en la línea correspondiente de tu programa.

Un saludo


Descargar Homebrew de BETA, gratis. Visualizar un tutorial, gratis. Iniciarse en la programacion en español, gratis. Colaborar a que la scene PSP en español crezca, no tiene precio.

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.