DARKICE

Registrado: 13 Dic 2005 Mensajes: 947 Ubicación: Beyond the Realms of Death
|
Publicado: Lun Dic 11, 2006 6:26 pm Título del mensaje: Adentrándonos un poco más en Lua I |
|
|
Adentrándonos un poco más en Lua I
Variables:
Las variables nos permiten almacenar información en ellas y consultarlas mas tarde, operar con ellas, etc. Las variables se pueden clasificar en dos tipos, locales (si solo existen en una función determinada) o globales (si existen desde el momento en que son declaradas hasta el final del programa). En Lua, las variables pueden contener información de los siguientes tipos:
2.Carácteres (a,A,b,B,...) 4.True/False (Booleanos (Cierto o Falso))
Sintaxis:
Para declarar variables tenemos que escribir el nombre que le queremos poner a esta (recordad que Lua distingue entre mayúsculas y minúsculas), el símbolo ‘=’ (asignación) y el valor que le queremos asignar a la variable.
| Código: | | nombredelavariable = valordelavariable |
Ejemplos:
| Código: | Variablevacia = nil
minombre = darkice
minumerodelasuerte = 7
booleano = true
funcionsuma = function ( )... end (las funciones las veremos aparte mas adelante)
|
Operaciones con variables:
A una variable, podemos cambiarle el valor asignado durante el programa, así como operar con ella. Las operaciones numéricas principales son:
Suma (+): numero1+numero2
Resta (-): numero1-numero2
Multiplicación (+): numero1*numero2
División (/): numero1/numero2
Potencia (^): numero1^numero2
Ejemplo:
| Código: |
Miedad = nil
actual =2006
nacimiento = 1985
Miedad = actual-nacimiento
|
En cuanto el programa acabara de ejecutar estas líneas, la variable “Miedad” pasaría a tener el valor 21.
Comparar variables (y valores):
Además de operar con variables, podemos compararlas con otras. Es decir, decir si son iguales, diferentes, mayores...
Las expresiones para comparar, siempre nos devolverán True o False (cierto o falso). Aquí tenéis una lista de estas:
4.>= (mayor o igual que). 6.<= (menor o igual que).
Mostrar el contenido de las variables en pantalla:
Para mostrar el contenido de una variable, usaremos la misma instrucción que para mostrar texto que vimos anteriormente, y en vez del texto entre comillas pondremos el nombre de la variable.
Sintaxis:
| Código: |
screen:print(pos x,pos y,variable,color)
|
Ejemplo:
| Código: |
--Variable que muestra el año en que estamos (2006)
actual = 2006
--La mostramos en la esquina inferior izquierda de la pantalla y en rojo (previamente declarado)
screen:print(0,0,actual,rojo) |
Uso del IF y Else:
El If es una sentencia que nos permite hacer “algo” si se cumple “una determinada condición”. El Else, va siempre despues de un If y nos permite hacer “algo” si no se cumple la condición del If.
Sintaxis:
| Código: |
if condición then (si se cumple la condición, entonces)
acciones en lua (codigo escrito en lua)
else (si no se cumple la condición)
acciones en lua (codigo escrito en lua)
end (fin, esto debe estar siempre al final del else o del if, si no hay else)
|
Ejemplo:
| Código: |
-- Una variable numerica.
numero1
-- Una variable numerica distinta la anterior.
numero2
if numero1>numero2 then
screen:print(0,0,numero1,rojo)
else
screen:print(0,0,numero2,rojo)
end
|
Este ejemplo, mostraría en la esquina inferior izquierda de la pantalla el máximo entre dos números.
Controles:
Para que un programa funcione según la información que el usuario le de (es decir, que haga algo cuando apretemos un botón), primero crearemos una variable a la que le asignaremos la lectura de los controles (Controls.read()), tal que así:
| Código: | | botones = Controls.read() |
Nota: mucha gente llama a esta variable “pad”, pero podéis darle el nombre que queráis.
A partir de esta línea de código, el programa leerá cada botón que aprietes en la consola.
El comando de introducción de un botón es el siguiente:
| Código: | | botones:botonapretado() |
Y el listado de los botones, es el siguiente:
•Arriba: up
•Abajo: down
•Izquierda: left
•Derecha: right
•L: l
•R: r
•Triángulo: triangle
•Circulo: circle
•X: cross
•Cuadrado: square.
Ejemplo:
| Código: |
botones=Control.read()
if botones:up() then
screen:print (150,50,”Arriba”, rojo)
end
if botones:down() then
screen:print (150,50,”Abajo”, rojo)
end
if botones:left() then
screen:print (150,50,”Izquierda”, rojo)
end
if botones:right() then
screen:print (150,50,”Derecha”, rojo)
end
if botones:l() then
screen:print (150,50,”L”, rojo)
end
if botones:r() then
screen:print (150,50,”R”, rojo)
end
if botones:cross() then
screen:print (150,50,”X”, rojo)
end
if botones:square() then
screen:print (150,50,”Cuadrado”, rojo)
end
if botones:triangle() then
screen:print (150,50,”Triangulo”, rojo)
end
if botones:circle() then
screen:print (150,50,”Circulo”, rojo)
end
|
Este trozo de código, mostrara un texto indicativo del botón que estemos pulsando.
Bucles:
Un bucle, no es mas que decir que se cumplan una serie de acciones mientras se cumpla una condición. En el bucle que vimos en el documento anterior la condición era true. Si ponemos como condición true, el bucle se cumplirá siempre (verdadero, siempre devolverá verdadero ).
Sintaxis:
La sintaxis de los bucles es la siguiente:
| Código: | while condición do
instrucciones
end -- Al igual que con los “Ifs”, hay que poner “end” al final del bucle. |
Ejemplo:
Usaremos como ejemplo el bucle que hemos visto en el documento anterior:
| Código: | while true do -- Como la condición es “ true”, el bucle se cumplirá siempre
screen.waitVblankStart() --Con esta instrucción mantenemos la pantalla
end -- finalizamos con la instrucción “end”
|
Imágenes:
Lua puede cargar imágenes en formato .JPG y .PNG, aunque utilizaremos sobretodo el último por el hecho de que permite el uso de transparencias.
Al igual que con los colores, para trabajar con imágenes tendremos que asignarlas a una variable. Estos se suele hacer al principio del programa.
Sintaxis:
| Código: | | variable = Image.load(“imagen.png”) |
Si la imagen no se encuentra en el mismo directorio que el archivo.lua, sino en una subcarpeta, lo pondremos así:
| Código: | | variable = Image.load(“subcarpeta/imagen.png”) |
Ejemplo:
| Código: | | nave = Image.load(“imagenes/naveespacial.png”) |
Tamaño de las imágenes:
Un acosa que nos puedes e muy útil, es obtener el tamaño del as imágenes, para así asegurarnos de que si las movemos, no se salgan de pantalla, etc.
Para obtener el ancho del a imagen usamos el siguiente comando:
Ejemplo:
| Código: | | anchonave = nave:width() |
Y para obtener el alto:
Ejemplo:
| Código: | | altonave = nave:height() |
Mostrar imágenes en pantalla:
Para mostrar una imagen en pantalla tendremos que escribir el comnando: screen:blit y entre parentesis, la posición x y la posición y donde queremos mostrar la imagen, y el nombre de la imagen, tal que así:
| Código: | | screen:blit(pos x,pos y,imagen) |
Ejemplo:
| Código: | | screen:blit(150,200,nave) |
Limpiar pantalla:
Con tal de que no se sobrepongan las cosas que el programa muestra en pantalla, vamos a “limpiarla”. Para ello utilizamos la siguiente instrucción:
Programa de recopilación:
Ahora, para practicar lo anterior, vamos a hacer un simple programa que nos muestre una imagen de fondo y que también muestre una imagen del botón del a consola que estemos pulsando.
En este programa usaremos las siguientes imágenes:
- Fondo:
- Botones:
El programa seria el siguiente:
| Código: | -- Autor: DARKICE
-- Descripción: Este es un programa simple que mostrará una imagen
-- del boton que estemos pulsando, ademas de una imagen de fondo.
-- Cargamos las imagenes que vamos a usar en el programa.
cruz = Image.load("imagenes/cruz.png")
cuadrado = Image.load("imagenes/cuadrado.png")
circulo = Image.load("imagenes/circulo.png")
triangulo = Image.load("imagenes/triangulo.png")
fondo = Image.load("imagenes/fondo.png")
-- Iniciamos el bucle principal.
while true do
-- Limpiamos la pantalla
screen:clear()
-- Mostramos la iamgen de fondo.
screen:blit(0,0,fondo)
-- Iniciamos la lectura de botones.
Pad = Controls.read()
if Pad:cross() then
screen:blit(228,124,cruz)
end
if Pad:triangle() then
screen:blit(228,124,triangulo)
end
if Pad:circle() then
screen:blit(228,124,circulo)
end
if Pad:square() then
screen:blit(228,124,cuadrado)
end
-- Damos la vuelta a la pantalla.
screen.flip()
-- Fin del bucle.
end
|
Podéis descargar el programa AQUÍ. _________________
Welcome to the third place... |
|