¿Dónde están los fallos en este código de Lua?

Menu = Image.load("imagenes/Menuimage.png")


Azul = Color.new (0,0,31)

Negro = Color.new(0,0,0)

Verde = Colo.new(0,255,0)


Menu = {}

ComenzarJuego = "Comenzar el juego"

Salir = "Salir"

Instrucciones = "Instrucciones"


Vida = {}

Vida.enemigo = 100

Vida.enemigo2 = 200

Vida.enemigo = 300

Vida.jefefinal = 600

Vida.jugador = 900

if ComenzarJuego == false then

Sel = 1

end

function mov()

if Keys.newPress.Down then

sel = sel + 1

elseif Keys.newPress.Up then

sel = sel - 1

end

for i =1, #Menu do

if sel ==i then

screen.print(SCREEN_DOWN,10,(10*i) +5,Menu[i],Azul)

else 

screen.print(SCREEN_UP,10,(10*i) +5,Menu[i],Azul)

end

end


if Instrucciones and Keys.held.A== true then


while true do

screen.print(SCREEN_UP,50,60,"En este juego hay que pulsar algún botón para que se le quite vida al enemigo")

screen.print(SCREEN_DOWN,50,60,"Cuidado tu enemigo también te quita vida")

render()

end

end

end

if Salir and Keys.held.A == true

then

 

Este código es de Micro Lua DS.

Y de paso díganme el código en micro lua ds para salir del programa que estés creando.


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 los2345

Código completo

Aquí está: 

--Definiendo variables--

Menu = Image.load("imagenes/Menuimage.png",VRAM)

 

Azul = Color.new (0,0,31)

Negro = Color.new(0,0,0)

 

 

Menu = {"Jugar","Instrucciones","Salir"}

 

 

 

 

Vida = {}

Vida.enemigo = 100

Vida.enemigo2 = 200

Vida.enemigo3 = 300

Vida.jefefinal = 600

Vida.jugador = 900

--Funciones--

function Asalto ()

Valor = 100

if (Asalto  and Keys.held.A) then

Vida.enemigo = 100 - 100

Vida.enemigo2 = 200 - 100

Vida.enemigo3 = 300 - 100

Vida.jefefinal = 600 - 100

screen.print(SCREEN_DOWN,120,180,"Has usado Puño feroz",Azul)

end

function Patada ()

Valor = 10

if (Patada  and Keys.held.B) then

Vida.enemigo = 100 - 10

Vida.enemigo2 = 200 - 10

Vida.enemigo3 = 300 - 10

Vida.jefefinal = 600 - 10

screen.print(SCREEN_DOWN,50,60,"Has usado Patada llameante",Azul)

end

function texto1()

screen.print(SCREEN_DOWN,120,180,"Mantén pulsado A para usar patada llameante",Azul)

end

function texto2()

screen.print(SCREEN_DOWN,120,180,"Mantén pulsado B para usar patada llameante",Azul)

end

--Bucles--

while true do

if ComenzarJuego == false then

Sel = 1

end

function mov()

if Keys.newPress.Down then

Sel = Sel + 1

elseif Keys.newPress.Up then

Sel = Sel - 1

end

for i =1, #Menu do

if Sel ==i then

screen.print(SCREEN_DOWN,10,(10*i) +5,Menu[i],Azul)

else 

screen.print(SCREEN_UP,10,(10*i) +5,Menu[i],Azul)

end

end

 

if Instrucciones and Keys.held.A == true then

 

 

screen.print(SCREEN_UP,50,60,"En este juego hay que pulsar algún botón para que se le quite vida al enemigo",Azul)

screen.print(SCREEN_DOWN,50,60,"Cuidado tu enemigo también te quita vida",Azul)

if (Salir and Keys.held.A) then break end

if (Jugar and Keys.held.A) then

Menu = Image.load("imagenes/Fondo2.png",VRAM)

screen.print(SCREEN_DOWN,50,60,texto1())

screen.print(SCREEN_DOWN,120,180,texto2())

if keys.held.A then

screen.print(SCREEN_UP,50,60,Asalto(),Azul)

end

if keys.held.B then

screen.print(SCREEN_UP,50,60,Patada(),Azul)

end

end

render()

end

end

end

end

end

Imagen de los2345

Pido ayuda de nuevo

Es que sino no voy a poder continuar con el homebrew ya que cuando inicio el homebrew en la NDS con Micro LUa DS sale chargement... y luego vuelve al menú principal.

Como hiciste el bucle o el break?

Si Lua no detecta ningún bucle o hay un break por medio sin ninguna condición, sale al menú de MicroLua.

 

Salu2!

Imagen de los2345

El break lo puse ...

Lo puse antes de cerrar el bucle pero dentro del while true do.

Por tu código actualizado

Por tu código actualizado, tal y como lo tienes ahora para que podamos ayudarte mejor

 

Salu2!

Imagen de los2345

Es lo que voy a hacer

Verás voy a subir el script completo porque aquí no puedo ponerlo ya que el code es largo. 

Click aquí para descargar el code. el code completo.

Edito: el link no funciona. Subiré el code pronto.

 

Imagen de david77777

¡Cuidado!

No utilices el servidor de Scenebeta para subir contenido personal :S

Sube el contenido a Mediafire, SkyDrive o parecido en estos casos.

PD: Tienes un botón en el editor de texto justo al final insertar código, te ayudará a organizar mejor el código en los comentarios.

Imagen de los2345

Gracias

Lo he subido a Mediafire.

PD:gracias xd.

Imagen de los2345

Ayuda, urgente

Mi homebrew no se inicia en Micro Lua y no hay ningun error en la programaión.

Imagen de los2345

Ahora no hay errores

Pero al ejecutarlo en la NDS con Micro Lua sale chargement... pero luego no aparece el homebrew sino que vuelve al menú.

Imagen de los2345

Gracias

Gracias y a ver si así funciona.

Imagen de los2345

Ahora me da este error

Compilation error on line number :47

Lua: Syntax error during pre-compilation

[string "C:\Documents and Settings\usuario\Escritorio\Proyecto lua origi..."]:47: no loop to break near 'end'

Esto

if (Salir and Keys.held.A) then break end  debe estar dentro del bucle while para poder romperlo, de lo contrario no funcionará.

 

Salu2!

Imagen de los2345

Pero

Pero aún así al compilarlo me marca error y no se porque. Aquí está el código actualizado:

--Mi primer programa en lua--

--Definiendo variables--

Menu = Image.load("imagenes/Menuimage.png",VRAM)

 

Azul = Color.new (0,0,31)

Negro = Color.new(0,0,0)

 

 

Menu = {"Comenzar el juego","Instrucciones","Salir"}

 

 

 

 

Vida = {}

Vida.enemigo = 100

Vida.enemigo2 = 200

Vida.enemigo = 300

Vida.jefefinal = 600

Vida.jugador = 900

--Bucles--

if ComenzarJuego == false then

Sel = 1

end

function mov()

if Keys.newPress.Down then

sel = sel + 1

elseif Keys.newPress.Up then

sel = sel - 1

end

for i =1, #Menu do

if sel ==i then

screen.print(SCREEN_DOWN,10,(10*i) +5,Menu[i],Azul)

else 

screen.print(SCREEN_UP,10,(10*i) +5,Menu[i],Azul)

end

end

 

if Instrucciones and Keys.held.A== true then

 

while true do

screen.print(SCREEN_UP,50,60,"En este juego hay que pulsar algún botón para que se le quite vida al enemigo")

screen.print(SCREEN_DOWN,50,60,"Cuidado tu enemigo también te quita vida")

render()

end

end

end

if (Salir and Keys.held.A) then break end

Lua distingue

Mayusculas y minúsculas, por tanto el error está en que la variable sel no existe, la única que existe es Sel con valor 1.

 

Salu2!

Imagen de los2345

Gracias

Gracias por las respuestas.

Hay unos cuantos

  • Debes especificar el destino al cargar una imágen, por ejemplo img = Image.load("img.png",VRAM), donde puedes especificar VRAM (656Kb) o RAM (4096Kb), OJO VRAM y RAM son variables!
  • La NDS NO soporta color de 8 bits por sí misma por lo tanto Color.new() tiene un máximo de 31, siendo Color.new(31,31,31) el blanco y no 255,255,255 pero en cambio puedes especificar color desde valores de 8 bits con Color.new256(255,255,255), siendo lo mismo que Color.new(31,31,31)
  • Otro fallo, esto
    Menu = {}
     
    ComenzarJuego = "Comenzar el juego"
     
    Salir = "Salir"
     
    Instrucciones = "Instrucciones"
      tendrías que hacerlo así para usarlo en una matríz:
    Menu = {"Comenzar el juego","Salir","Instrucciones"}
    siendo "Comenzar el juego" el elemento Menu[1], tambien puedes hacer esto, ambos códigos son equivalentes:
    Menu = {}
    Menu[1] = "Comenzar el juego"
    Menu[2] = "Salir"
    Menu[3] = "Instrucciones"
    , esto es para que luego puedas usarlo en un bucle for, de lo contario tendrias que hacerlo con pairs() .

 

El código para apagar la NDS es os.exit() pero si lo que quieres es cerrar el programa actual, tienes que romper el bucle, sin que haya nada despues de este usando la palabra break, ejemplo: if Keys.newPress.Start then break end

 

PD: Cuando uses ifs con and y or acostúmbrate a usar paréntesis, porque no es lo mismo if Salir and Keys.held.A == true then break end que if (Salir and Keys.held.A) == true then break end , y además puedes omitir el true, dejandolo así if (Salir and Keys.held.A) then break end .

 

Salu2! y espero que te sirva de ayuda

Color

Ahi se lee claramente Verde = Colo.new(0,255,0) cuando deberia ser Verde = Color.new(0,255,0)

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.