Publicidad

Anuncios Google

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

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

Hola a tod@s, espero que hayáis practicado las variables y las tablas. Pues hoy vamos a hablar de operadores y estructuras de control y después pondremos a prueba lo que habéis aprendido en un pequeño programa de prueba. Para saber de que hablamos necesitamos los conocimientos de la Parte 1ª.

Primero empezaremos con los operadores de lua, estos son expresiones u operaciones que se aplican a datos. Estos pueden ser matemáticos, de comparación y de expresión de datos.

Los operadores matemáticos son expresiones que permiten operar varios números (Nosé si los strings se pueden operar XD). Son estos:

  • Suma o adicción:

    variable + variable

  • Resta o reducción:

    variable - variable

  • Multiplicación:

    variable * variable

  • División:

    variable / variable

  • Potencia:

    variable ^ exponente

Estos se utilizan para bucles y/o repeticiones, que los veremos más adelante. Si quieres saber funciones matemáticas mira aquí.

Los operadores de comparación son expresiones que permiten comparar términos:

  • Igual:

    variable == variable

  • Distinto:

    variable ~= variable

  • Mayor y menor que:

    variable > variable -- mayor
    variable < variable -- menor

  • Mayor o igual y menor o igual que:

    variable >= variable -- Mayor o igual que
    variable <= variable -- Menor o igual que

Estas funciones se utilizan con condiciones para comparar variables.

Los operadores de expresión permiten relacionar varios términos, que normalmente se trabaja junto a los de comparación. Son los siguientes:

  • And (Y):

    variable and variable

  • Or (O):

    variable or variable

  • Not (No):

    not variable

  • True (Verdadero):

    variable == true

  • False (Falso):

    variable == false

  • Nil (Vacío o nulo):

    variable == nil

Con esto vamos a hacer un miniprograma para completar lo aprendido, ser libres de modificarlo:

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
 
-- Iniciamos el bucle principal
while true do
	beginGFX() -- Iniciamos las funciones de pantalla
	x = 100
 
	-- Imprimimos el mensaje de bienvenida
	DrawText(30, 10, "Bienvenido a [Tutorial] Aprende a programar en PS3 facilmente (Parte 2a) 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]))
	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
	DrawText(70, x,  string.format("Es E igual a F? %s", datos[5] == datos[6])) -- Igual a
	x = x +20
	DrawText(70, x, string.format("Es E distinto de G? %s", datos[5] ~= datos[7])) -- Distinto de
	x = x +20
	DrawText(70, x, string.format("Es A mayor que B? %s", datos[1] > datos[2])) -- Mayor que
	x = x +20
	DrawText(70, x, string.format("Es D menor que C? %s", datos[4] < datos[3])) -- Menor que
	x = x +20
	DrawText(70, x, string.format("Es D mayor o igual que A? %s", datos[4] >= datos[1])) -- Mayor o igual que
	x = x +20
	DrawText(70, x, string.format("Es B menor o igual que C? %s", datos[2] <= datos[3])) -- Menor o igual que
	x = x +20
	DrawText(70, x, string.format("Esta H vacio? %s", datos[8] == nil)) -- Haber que responde lua...
 
	-- 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

Ahora guardalo y ejecutalo... ¡Oh! Si no va. Ya lo hice aporta :p. Hay un error muy gordo que podremos corregir ahora.

Vamos a ver que son las estructuras de control. Estas son sentencies que permiten modificar el flujo de ejecución de un programa. Pueden estar compuestas por sentencias o otras estructuras. Esto nos va a ayudar a corregir el error.

Lua tiene estos:

  • Condición:

    • If … then … end:

      if condición then -- Si la condicion es verdad entonces...
         código -- ...se ejecuta el código
      end

    • If … then … else … end:

      if condición then -- Si la condicion es verdad entonces...
         código -- ...se ejecuta el código
      else -- sino...
         código -- ...se ejecuta el código
      end

    • If … then … elseif … then … elseif […] end:

      if condición then -- Si la condicion es verdad entonces...
         código -- ...se ejecuta el código
      elseif condición2 then -- Sino, si la condicion2 es verdad entonces...
         código -- ...se ejecuta el código
      elseif condición3 then -- Sino, si la condicion3 es verdad entonces...
         código -- ..se ejecuta el código
      ...
      end

    • If … then … elseif … then … elseif […] else … end:

       

      if condición then -- Si la condicion es verdad entonces...
         código -- ...se ejecuta el código
      elseif condición2 then -- Sino, si la condicion2 es verdad entonces...
         código -- ...se ejecuta el código
      elseif condición3 then -- Sino, si la condicion3 es verdad entonces...
         código -- ...se ejecuta el código
      ...
      else -- sino...
         código -- ...se ejecuta el código
      end

  • Bucles de repetición:

    • while … do … end:

      while condicion do -- Mientras la condicion es verdad hacer...
         código -- ...lo que sale en el código
      end

    • repeat … until … end:

      repeat -- repetir...
         código -- ...código...
      until condición --...mientras la condición sea verdadera
      -- A diferencia de while do, repeat ejecuta el código una vez aunque la condición sea mentira. Si es verdad, lo sigue ejecutando hasta que no sea verdad.

    • for … do … end:

      for variable = principio, fin, paso do
         código
      end
       --[[
      For usa una variable como índice, la cual tendrá un valor inicial (principio) que aumentará progresivamente una cantidad (paso es el incremento o decremento, sino se lo coloca, por defecto paso será 1). Al igual que los otros, relizará una comprobación, si la variable no ha alcanzado un valor final (fin) continuará con la ejecución del bloque de código, cuando la variable haya alcanzado o sobrepasado el valor final, este bucle se detendrá. (He cogido la explicación de http://psp.scenebeta.com/tutorial/estructuras-de-control)
      Esto se podría hacer mediante un while, pero es mas costoso:
      ]]--
      variable, fin, paso = principio, numero, numero
      while variable (mayor o igual o menor o igual) fin do
         código
         variable = +- paso
      end

    • for … in … do … end:

      for campo, dato in funcion(tabla) do
         código
      end
      --[[Aquí, for, mediante una función, recorre una tabla devolviendo un campo y su dato correspondiente. A veces los devuelve en su posicion y otras los desordena. Las funciones pueden ser:
      ]]--
       
      -- next
      for campo, dato in next(tabla) do -- Recorre toda la tabla, puede darlos desordenados.
         código
      end
       
      -- pairs
      for campo, dato in pairs(tabla) do -- Recorre la tabla hasta que llega a un campo vacio, puede darlos desordenados
         código
      end
       
      --ipairs
      for campo, dato in ipairs(tabla) do -- Recorre la tabla hasta llegar a un campo vacio, los da ordenados
         código
      end

    • break:

      -- break se utiliza en los bucles para parar su función
      while x < 10 do
         if x = 5 then
            break
         end
         x = x +1
      end

Pues con esto vamos a corregir los errores, y encima lua nos va a responder. ¿No te lo crees? Pues vuelve a abrir el archivo e intenta editarlo para que lo haga. Si no sabes como, pues yo te lo digo. Mira este código:

if datos[5] == datos[6] then
	DrawText(70, x,  "Es E igual a F? Si")
else
	DrawText(70, x,  "Es E igual a F? No")
end

Es una condición. Utilizando esta estructura, que es la que más se utiliza, podremos hacer lo que te dije. Intenta editar el código como yo te lo dije. Si aún no te sale pues te pongo el código de como te quedaría. Si has llegado hasta aquí te recomiendo que lo escribas, no copies. Así aprendes y para la próxima no se te escapará:

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
 
-- Iniciamos el bucle principal
while true do
	beginGFX() -- Iniciamos las funciones de pantalla
	x = 100
 
	-- Imprimimos el mensaje de bienvenida
	DrawText(30, 10, "Bienvenido a [Tutorial] Aprende a programar en PS3 facilmente (Parte 2a) 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]))
	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
	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
 
	-- 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

Comento: Lo primero ya sabemos lo que es, también las variables y la tabla. En la línea 23 vemos como se imprime en pantalla las variables y llegamos a la 24. Aquí hacemos una suma y mostramos el resultado, en la siguiente una resta y así con la multiplicación y la división y la potencia. Si te fijas esto ya estaba en el primero, pero en la linea 39 ya cambia la cosa. Estamos haciendo una condición que compruebe que son iguales. Después, si es, imprimimos el mensaje de que si lo es, si no, imprimimos el mensaje de que no. Esto lo vamos repitiendo en las demás expresiones, con lo que corregimos el error, pruebalo y verás.

Pues ya hemos aprendido algo nuevo. Nos veremos próximamente creando archivos a lo tonto. Saludos ^-^.

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

si lo que dices es psl1ght

si lo que dices es psl1ght pero con eso no consigo compilar nada  pero yo lo que quiero decir puedo crear un programa programandolo con notepad y despues compilarlo y que funcione

Imagen de NEKERAFA

Busca por el foro, que para

Busca por el foro, que para eso esta xdd. Desde hace tiempo estas haciendo off topic, ya que esto es un tutorial de lua. No te lo tomes a mal ya que yo te intente responder, pero puede que por el foro te ayuden más


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

yo no he encontrado nada que

yo no he encontrado nada que funcione para el cfw de kweam solo para de geohot te importaria ponerme los enlace por que no encuentro nada te lo agradeceria un monton

Imagen de NEKERAFA

Pero da igual que CFW

Pero da igual que CFW utilices, si esta firmado te lo lee. Los CFW solo poner la opcion de instalar los homebrews ademas de algunas pijaditas XD ya que las claves son globales...


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

no porque solo la

no porque solo la aplicaciones que hizo geohot valen para el cfw de geohot y noencuentro otras que sirvan para otro ustom gracias por responderme las anteriores dudas no intento ser pesao una cosa tu as consegudo ompilar un pkg y juegarlo en kweam si es asi ponme el programa por favor un saludo y gracias

Imagen de NEKERAFA

No pasa eso

Estas equivocado, las aplicaciones para que se inicien en los CFW se firman, las firmas sirven para cualquier version de PS3 ya que tambien las incorporan los juegos. Lo unico que haces pasar una aplicacion por oficial. Geohot lo unico que ha hecho es un CFW. Todo lo demas, como el LuaPlayer, esta echo por programadores.

Despues el problema son los backups, que en unos CFW ya tienen los modulos y solo necesitas un programa que los ejecutre y en los otros no te vienen los modulos, por lo que tienes que instalar los archivos.

Yo esque no tengo la PS3 pirateada, pero aún asi me sigo pasando por aquí. Hay programas para linux y windows para los pkg, pero nose cuales son. Aún asi seguramente las encontraras en los foros. Ve al principio de la página y en Buscar contenidos: pon descompresor de pkg, compresor de pkg o lo que estes buscando, tampoco es tan dificil. Todo esta aí, solo hay que buscarlo.


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

ya he conseguido firmar

ya he conseguido firmar aplicaciones tenias razon gracias otra duda que programa podia usar para programar en ps3 no me refiero a lua player me refiero a crear un programa en c con un determinado programa y luego como adaptarlo pra la ps3 en mi ordenador tengo la sdk 1.92 de sony pero solo se compilar con ella y ademas determinados programas no me dejas me podrias decir algun programa

un saludo Gracias

Imagen de NEKERAFA

No te recomiendo utilizar la

No te recomiendo utilizar la sdk de sony ya que es ilegal, en scenebeta recuerdo que pusieron otro compilador libre para programar en C, pero no lo se a ciencia cierta.

Para compilar en C solo necesitas un editor de textos como el notepad++ y un compilador, que en este caso el que te dije. Creo recondar que la PS3 utilizaba C cell, asi que mira tutoriales.

Si lo que te refieres es programar utilizando un programa para pc, me parece que eso es imposible, tienes que programarlo tu todo. Lo unico que hay son bibliotecas que te ahorran trabajo al programar


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

no merefiero a firmar una

no merefiero a firmar una aplicaion hecha por mi como podria firmala puedes poner los programas que se han para firmar pero para el de kweam te lo agradeceria un monnton he buscado por internet pero no encrotado nada que me sirva

Imagen de NEKERAFA

Yo digo que si quieres usar

Yo digo que si quieres usar una aplicacion en el kweam y sabes que no esta firma, pues puedes hacerlo por ti mismo. Mira por estos foros que hay mucha informacion de como hacerlo


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 anielo

Esta chulo gracias

Esta chulo gracias

Imagen de Cheleon

Esta genial

Me encanta, sigue asi, puede que si lo consigo me ponga a hacer algo.

:P

Imagen de De0x

cheleon yo pensaba que al ser

cheleon yo pensaba que al ser el editor sabias de esto

Imagen de Cheleon

Ser

editor no tiene nada que ver con ser coder xD

Ademas, cada consola es un mundo, yo se de NDS, no puedo estar en todo, o es que me quereis matar?!

Pero este verano ya se donde me pondre a experimentar.

Imagen de De0x

como consigues ha aprender a

como consigues ha aprender a programar en ps3

Imagen de NEKERAFA

Jajajaja... <offtopic> Solo

Jajajaja...

<offtopic>

Solo chuck norris y Dios estan en todas partes... Hacen copias de si mismos y lo reparten por la tierra

</offtopic>

Mientras no toques nada interno o la tires por la ventana porque no te lee un juego... expreimenta todo lo que puedas.

A todo esto, ya tengo la 3ª parte


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

como lo has echo

como lo has echo

Imagen de NEKERAFA

El que?

El que?

Imagen de De0x

me parece genial que hagas

me parece genial que hagas este tutorial ya era ora de que alguien lo hiciera una como firmo la aplicacions para kweam

gracias repondeme porfavor

Imagen de NEKERAFA

LuaPlayer no esta firmado,

LuaPlayer no esta firmado, así que no puedes ejecutarlo en kweam. Hay que esperar a que el creador lo actualice y lo firme (Que lleva tiempo sin versele el pelo). Otra cosa que puedes hacer es descomprimir el pkg, firmar los contenidos y firmar el pkg.


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

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.