[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
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).
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
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).
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
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).
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
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).
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
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).
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
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).
Esta chulo gracias
Esta chulo gracias
Esta genial
Me encanta, sigue asi, puede que si lo consigo me ponga a hacer algo.
:P
cheleon yo pensaba que al ser
cheleon yo pensaba que al ser el editor sabias de esto
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.
como consigues ha aprender a
como consigues ha aprender a programar en ps3
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).
como lo has echo
como lo has echo
El que?
El que?
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
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).