Publicidad

Anuncios Google

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

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

Hola a tod@s, hoy nos toca aprender más cosas sobre Lua, y ya sabéis, nadie se acuesta sin saber nada nuevo. Hoy nos tocan las funciones, algo muy simple. Para saber de que hablamos necesitamos los conocimientos de la Parte segunda.

Para empezar, como siempre, vamos a ver que es una función. Según wikipedia, como idea general, se presenta como un subalgoritmo que forma parte del algoritmo principal, el cual permite resolver una tarea específica. Sí, yo también tengo los ojos como platos al ver tal frase malsonante, así que resumo: una función no es nada más que un trozo de código que nos ayuda a una determinada tarea. Una utilización seria cuando tenemos un programa de 100000 lineas (Veremos como simplificar aun más en un próximo tutorial) y tenemos un código que esta repetido 30 veces y nos ha dado un error. ¿Te atreves a cambiarlo? Para eso están las funciones, que las vamos a ver ahora.

Para crearlas (declararlas) tenemos que escribir el nombre que queremos que tome, como si fuera una variable, después el código y al final un end. Aquí tenéis ejemplos:

nombre = function([argumento]) código end
function nombre() código end

Es muy fácil. Pues saber que también se le puede enviar argumentos (variables) que a lo mejor necesitemos en la función. Mirar estos ejemplos:

nombre = function(a, b, c) -- a, b y c son variables
   código
end
--
function(a, b, c) -- a, b y c son variables
   código
end

También podemos recibir argumentos (retornar argumentos) de las funciones. Mira esto:

function nombre()
   Draw.Text(10,10, "Hola")
end
--
function nombre()
   return hola
end

Como veis, se puede retornar directamente a pantalla con una función o si queremos, mediante return a una variable.

Muy bien, ahora vamos a pasar a la practica... ¿Os acordáis del miniprograma que hicimos en la anterior entrega? Pues vamos a abrirlo y a modificarlo, así lo ordenamos un poco. Por si no sabéis por donde cojerlo, os pongo el código:

InitGFX(720, 480) -- Con esto iniciamos la pantalla en 540p
initPads(7) -- Con esto leeremos las pulsaciones de los 7 mandos
 
-- Variables
datos = {}
	datos[1] = 10
	datos[2] = 2
	datos[3] = 6
	datos[4] = 10
	datos[5] = "Hola mundo!"
	datos[6] = "Hola PS3!"
	datos[7] = "Hola mundo!"
	datos[8] = nil
 
-- Funciones
 
function PrintHola() --Mensaje de bienvenida
		DrawText(30, 10, "Bienvenido a [Tutorial] Aprende a programar en PS3 facilmente (Parte 3a) Ejemplo 1")
		DrawText(60, 50, "Vamos a hacer un programa con lo aprendido")
		DrawText(60, 70, string.format("A: %i B: %i C: %i D: %i E: %s F: %s G: %s", datos[1], datos[2], datos[3], datos[4], datos[5], datos[6], datos[7]))
end
 
function Cuentas() -- Cuentas
	variable = datos[1]+datos[2]
	DrawText(70, x, string.format("A + B: %i", variable)) -- Suma
	x = x +20
	variable = datos[1]-datos[3]
	DrawText(70, x, string.format("A - C: %i", variable)) -- Resta
	x = x +20
	variable = datos[2]*datos[3]
	DrawText(70, x, string.format("B x C: %i", variable)) -- Multiplicación
	x = x +20
	variable = datos[4]/datos[2]
	DrawText(70, x, string.format("D / B: %i", variable)) -- División
	x = x +20
	variable = datos[2]^datos[3]
	DrawText(70, x, string.format("B^C: %i", variable)) -- Potencia
	x = x +20
end
 
function Condiciones() -- Condiciones
	if datos[5] == datos[6] then -- condicion, igual a
		DrawText(70, x,  "Es E igual a F? Si")
	else
		DrawText(70, x,  "Es E igual a F? No")
	end
	x = x +20
	if datos[5] ~= datos[7] then -- Distinto de
		DrawText(70, x, "Es E distinto de G? Si") 
	else
		DrawText(70, x,  "Es E distinto a G? No")
	end
	x = x +20
	if datos[1] > datos[2] then -- Mayor que
		DrawText(70, x, "Es A mayor que B? Si")
	else
		DrawText(70, x, "Es A mayor que B? No")
	end
	x = x +20
	if datos[4] < datos[3] then -- Menor que
		DrawText(70, x, "Es D menor que C? Si")
	else
		DrawText(70, x, "Es D menor que C? No")
	end
	x = x +20
	if  datos[4] >= datos[1] then -- Mayor o igual que
		DrawText(70, x, "Es D igual o mayor que A? Si")
	else
		DrawText(70, x, "Es D igual o mayor que A? No")
	end
	x = x +20
	if datos[2] <= datos[3] then -- Menor o igual que
		DrawText(70, x, "Es B menor o igual que C? Si")
	else
		DrawText(70, x, "Es B menor o igual que C) No")
	end
	x = x +20
	if datos[8] == nil then -- Haber que responde lua
		DrawText(70, x, "Esta H vacio? Si")
	else
		DrawText(70, x, "Esta H vacio? No")
	end
end
 
-- Iniciamos el bucle principal
while true do
	beginGFX() -- Iniciamos las funciones de pantalla
	x = 100
 
	PrintHola() -- Ponemos el mensaje inicial
	Cuentas() -- Ponemos las cuentas
	Condiciones() -- Ponemos las condiciones
 
	-- Si pulsamos start o entre si estamos en el emulador, saldremos del programa
	if start(0) >= 1 then
		break
	end
 
	endGFX() -- Finalizamos las funciones de pantalla
end

Ejecutarlo y veréis que se muestra lo mismo, pero ahora el código esta más ordenado.

Saludos y hasta la próxima.

Archivo listo para probar: Ejemplo3.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

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 De0x

podrias hacer un tuto en c?

podrias hacer un tuto en c? gracias

Imagen de NEKERAFA

Mmm, nose

Lo siento, pero en C soy un principiante, no quiere decir que en lua tambien lo sea, lo que pasa que ya llevo tiempo en Lua y se bastante más que en C, que no se nada.

Y otra cosa, no te lo tomes a mal, pero esto es un tuto de lua, asi solo comenta si quieres decir algo de este. Si necesitas ayuda para programar en C o quieres documentación, buscalo en buscar contenido o postea tu mismo en programación pidiendo ayuda, así mantenemos limpio el foro y no mezclamos cosas.

Saludos


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).

Imagen de De0x

vale gracias si algun dia

vale gracias si algun dia aprendes C haz un tuto que te lo agradecere

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.