Publicidad

Anuncios Google

[Tutorial] Aprende a programar en PS3 fácilmente (Parte 1ª)

[Tutorial] Aprende a programar en PS3 fácilmente (Parte 1ª)

Hola a tod@s. Hoy voy a explicar que son las “variables” y las “tablas” en Lua y después utilizaremos lo aprendido para crear un pequeño programa de prueba, para que así veamos como se maneja el LuaPlayer. Para saber de que hablamos necesitamos los conocimientos de la Parte Inicial.

Empezaremos por variables, que es algo sencillo. Las variables son espacios de memoria en los que se guardan datos, como números o caracteres, que a las que se le asignan una etiqueta. Como su nombre indica, pueden variar según transcurra el programa redefiniéndolas otra vez. Las variables pueden ser globales, es decir, que se pueden utilizar en toda la estructura del programa, o locales, que solo se pueden utilizar en una determinada zona. Vamos a ver unos ejemplos:

Ejemplos de estructuración de las variable:

-- Estructuracion de variable global
... Inicio del programa (Más variables) ...
 
variable = datos
 
... Resto del programa ...
----------------------------------------------------------
-- Estructura de variables locales
--1. Funciones
... Inicio del programa (Variables Globales) ...
 
function Una_funcion()
	local variable = datos
 
	... Resto de la función ...
end
 
... Resto del programa ...
--2. Bucles
... Inicio del programa (Variables Globales) ...
 
for n = 1, 10 do
 
	local variable = datos
 
	... Resto del bucle ...
end
 
... Resto del programa ...
----------------------------------------------------------
-- Uso de variables para mostrar en pantalla
... Inicio del programa (Más variables) ...
 
variable = "Hola a todo el mundo!"
 
... Parte del programa ...
 
DrawText(10, 10, string.format("%s", variable))
 
... Resto del programa ...
----------------------------------------------------------
-- Uso de una variable vacia
variable = nil -- Se puede utilizar para borrar variables ya definidas

Como veis es fácil. Antes visteis como se utilizan, pero lo voy a explicar, ya que no es igual para todas las variables. A diferencia de los demás LuaPlayer, el LuaPlayer para PS3 aún no trata automáticamente el tipo de dato de las variables al imprimirlas como texto, con lo que al mostrarlas en pantalla tenemos que definir el tipo de dato con la función string.format(). Los que sepan de C/C++ sabrán esto de sobra, pero los demás no. Como habréis observado, para mostrarlo seria:

DrawText( x, y, string.format("%i", variable))

Aquí pongo los tipos de datos que tienen que ir en % (Esta cogido de aquí):

 

  • i Se utiliza para la salida de valores de variables enteros.

  • u Lo mostrará como un entero con signo.

  • o Entero octal sin el cero inicial.

  • x Para los hexadecimales pero sin mostrar el 0x.

  • c Se usa para caracteres

  • s Se interpretará como una cadena de caracteres.

  • g El dato se muestra como un numero de coma flotante, con o sin exponente según convenga. Cabe destacar que no se mostrarán ni ceros no significativos ni el punto si no es necesario.

  • f Valor de coma flotante sin exponente.

  • e Se muestra como un número de coma flotante con exponente.

 

Pues las tablas son como una variable que engloba a otras. Una tabla puede contener variables o hasta otras tablas. También puede contener otras dimensiones, también llamados arrays.

No se si pueden ser locales o globales, pero siempre se utilizan globalmente. Unos ejemplos:

Ejemplos de estructuración de las tablas:

-- Estructuracion de una tabla vacia
... Inicio del programa (Variables Globales) ...
 
tabla = {} -- Esto se utiliza para insertar otras tablas o indexar datos
 
... Resto del programa ...
----------------------------------------------------------
-- Estructura de una tabla con variables no indenxadas
... Inicio del programa (Variables Globales) ...
 
tabla = {hola = "Hola a todos, bienvenidos.", numero = 50, texto = "10", archivo = "C:/Datos/Carpetas/SubCarpetas/archivo.txt"} -- en donde pone texto, lo que se le asinga el el texto 10, no el numero, ya que si intentais modificarlo como numero os va a dar error
 
... Parte del programa ...
-- Uso de las variables
 
DrawText(100, 10, string.format("%s", tabla.hola))
DrawText(100, 20, string.format("%i", tabla.numero))
DrawText(100, 30, string.format("%x" tabla.numero))
 
... Resto del programa ...
 
----------------------------------------------------------
-- Estructura de una tabla con variables indenxadas
... Inicio del programa (Variables Globales) ...
 
tabla = {}
	tabla[1] = "texto1"
	tabla[2] = 10000
	tabla[3] = "mucha cosas"
 
... Parte del programa ...
-- Uso de las variables
 
DrawText(100, 10, string.format("%s", tabla[1]))
DrawText(100, 20, string.format("%i", tabla [2]))
DrawText(100, 30, string.format("%x" tabla[2]))
 
... Resto del programa ...
 
----------------------------------------------------------
-- Estructura de un array de dos dimensiones con variables no indenxadas e indenxadas
... Inicio del programa (Variables Globales) ...
 
tabla = {}, { hola = "Hola a todos, bienvenidos.", numero = 50, texto = "10"}
	tabla[1][1] = "texto1"
	tabla[1][2] = 10000
	tabla[1][3]= "mucha cosas"
 
... Parte del programa ...
-- Uso de las variables
 
DrawText(100, 10, string.format("%s", tabla[2].hola))
DrawText(100, 20, string.format("%i", tabla[2].numero))
DrawText(100, 30, string.format("%x" tabla[2].numero))
DrawText(100, 40, string.format("%s", tabla[1][1]))
 
... Resto del programa ...

Si ya lo habéis entendido, vamos ha hacer un pequeño programilla para entenderlo y practicarlo. Lo que vamos a hacer es poner un texto de saludo en una variable y varios datos en una tabla para despues mostrar todo en pantalla. Abrir un editor de texto plano y intentar escribir lo que pone aquí, no lo copies, ya que así no lo entenderéis mucho. He puesto comentarios, pero os lo explico luego:

InitGFX(720, 480) -- Con esto iniciamos la pantalla en 540p
initPads(7) -- Con esto leeremos las pulsaciones de los mandos de PS3, que el máximo es 7.
 
-- Variables y tablas
hola = "Bienvenido a [Tutorial] Aprende a programar en PS3 facilmente (Parte 1a) Ejemplo Practico"
datos = {}
	datos[1] = "Hola a todos"
	datos[2] = "Has conseguido una pocion"
	datos[3] = 10
	datos[4] = 3.14159
	datos[5] = "10000"
 
-- Iniciamos un bucle infinito
while true do
	beginGFX() -- Iniciamos las funciones de la pantalla
	x = 120
 
	DrawText(5, 10, string.format("%s", hola)) -- Imprimimos el mensaje de bienvenida
	DrawText(100, 100, 'Datos de la tabla "Datos":')
	-- Ponemos un Bucle for para mostrar los primeros textos
	for n = 1, 2 do
		DrawText(110, x, string.format('Dato %i: "%s"', n, datos[n]))
		x = x + 20
	end
	-- Mostramos el primer numero
	DrawText(110, x, string.format('Dato 3: "%i"', datos[3]))
	x = x + 20
	-- Mostramos el segundo numero en decimal y el hexadecimal
	DrawText(110, x, string.format('Dato 4 "f": "%f"', datos[4]))
	x = x + 20
	DrawText(110, x, string.format('Dato 4 "x": "%x"', datos[4]))
	x = x + 20
	-- Mostramos el texto ultimo
	DrawText(110, x, string.format('Dato 5:"%s"', datos[5]))
 
	-- Si pulsamos start o enter si estamos en emulador, saldremos del programa
	if start(0) >= 1 then
		break
	end
 
	endGFX() -- Finalizamos las funciones de la pantalla
end

Creo que es bastante fácil, solo explicar esto:

  • El texto que va después de – es un comentario, Lua no lo leerá.
  • Necesitamos la función InitGFX() al inicio de todos los programas que hagamos, ya que sino no se mostrará nada o nos dará error. Sirve para elegir la resolución de pantalla. Para 540p es InitGFX(720, 480) y para 720p es InitGFX(1080,720).
  • Para mostrar texto o imágenes se necesita que se hallan puesto las funciones beginGFX() y endGFX(), en este caso los ponemos al inicio y al final del bucle.
  • Si queremos que funcione el mando y el teclado y no tener que apagar la Play o el ordenador para sacar la pantalla del programa, tenemos que poner la función initPads() al inicio del programa, ya que es la función que leerá las teclas que pulsemos en los mandos / el teclado y para que lea el que esta encendido pondremos 7, ya que son los mandos que puede controlar PS3, y también una condición para romper el bucle y salir del programa, yo en este caso utilice el botón Start.

Si os ha salido perfecto a la primera, probar y editar el código y modificarlo, y si os da error saber que podréis entrar aquí una y otra vez para ver donde os equivocais. Ser libres y incluso haceros muchos mas miniprogramitas.

Esto ha sido todo por hoy y os espero en la próxima, saludos.

Archivo listo para probar: Ejemplo1.zip PS3 Debug SRC es


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).


Anuncios Google