Anuncios Google

Problema con código Lua

Buenas. Estoy haciendo un juego en Lua sobre preguntas matemáticas. Cada vez que respondes una pregunta, pasas a la siguiente pregunta (las preguntas están en formato ".png"). Lo que quiero hacer es que cuando pulses el botón "X", salga la primera pregunta. Os dejo el código porque no me funciona (me dice que hay un [expected end]):

--Comandos principales
white = Color.new(255,255,255)
red = Color.new(255,0,0)
black = Color.new(0,0,0)
blue = Color.new(0,0,255)
font = Font.load("font.ttf")
font:setPixelSizes(0,50)
puntos = 0
welcomenow = Image.load("entrenamientolua.png")
pulsastart = Image.load("fulsastart.png")
primera = Image.load("aristaalcubo.png")
oldpad = Controls.read()

function pasar()
pad = Controls.read()
if pad:cross() then
screen:blit(0, 0, primera)
screen.waitVblankStart()
screen.flip()
end

--Pantalla de bienvenida
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, pulsastart)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
while true do
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, pulsastart)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
pasar()
end



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 P22

Por cierto PSPNOVATO la

Por cierto PSPNOVATO la funcion de salir seria asi:

if pad:cross() and menu = 4 then

   os.exit()

end

Imagen de Tanos

Nope

Esa función da problemas. La ideal sería System.Quit().

Saludos 

Imagen de P22

Pues yo en mi juego la uso

Pues yo en mi juego la uso y me va perfectamente asi que tu veras ...

Saludos  ,  P22

Imagen de Tanos

Tambien la he usado

También la he usado, y se cuelga en lugar de salir xD que irónico.

Saludos

Imagen de P22

Si lo unico que quieres

Si lo unico que quieres hacer es un menu yo no haria todas esas chorradas(no pretendo ser sarcastico) ya que son demasiadas cosas te lo dejo aqui:

m1 = Image.load(m1.png)

m2 = Image.load(m2.png)

presentacion = 0

while true do

screen:clear()

pad = Controls.read()

if pad:up() then presentacion = presentacion + 1 end

if pad:down() then presentacion = presentacion - 1 end

if presentacion = 1 then screen:blit(0,0,m1) end

if presentacion = 0 then screen:blit(0,0,m2) end 

if presentacion = 2 then presentacion = 0 end

screen.waitVblankStart()

screen.flip()

end

Por cierto :

Por que poneis 80 entre los parentesis?

Saludos P22   

EDITO:pon los oldpad a tu gusto

Es probable que tu error se deba a los oldpad porque yo en mis menus no lo puedo poner ya que si no no me va y la flecha no se mueve


¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.

Mi review: iPod Touch 4G

Imagen de PSPNOVATO

Sigue sin hacer nada.

Sigue sin hacer nada. Aunque ahora, cuando lo dejo pulsado, se cierra rápidamente. Ahí va:

--Comandos principales
white = Color.new(255,255,255)
red = Color.new(255,0,0)
black = Color.new(0,0,0)
blue = Color.new(0,0,255)
font = Font.load("font.ttf")
font:setPixelSizes(0,50)
puntos = 0
fondo = 0
welcomenow = Image.load("entrenamientolua.png")
pulsastart = Image.load("fulsastart.png")
primera = Image.load("aristaalcubo.png")
oldpad = Controls.read()

function pasar()
pad = Controls.read()
if pad:cross() and oldpad:cross() ~= pad:cross() and fondo <= 0 then
   fondo = fondo + 1
   end
if fondo == 1 then
   screen:blit(0, 0, aristaalcubo)
   end
screen.waitVblankStart()
screen.flip()
end

--Pantalla de bienvenida
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, pulsastart)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()

while true do
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, pulsastart)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()

pasar()

end


Imagen de yoan03

el error

no viene de eso si lo haces de nuevo calmadamente te daras cuenta de los errores k hiciste lo mismo hago yo antes de hacer el codigo para el juego k voy a crear primero hago una prueba en un nuevo documento (una carpeta diferente con otro nombre como prueba1/script.lua) y la hago correr en lua si algo salio mal no tengo k complicarme la vida viendo el monton de codigo k tengo en mi juego.

Un saludos ojala k salga de tu problema pronto ;)

Imagen de Tanos

Ya casi

El problema es que las sumas se ejecutan muy rápido, cambia tu función:

function pasar()
pad = Controls.read()
if pad:cross() and oldpad:cross() ~= pad:cross() and fondo <= 0 then
   fondo = fondo + 1
   end
if fondo == 1 then
   screen:blit(0, 0, aristaalcubo)
   end
screen.waitVblankStart()
screen.flip()
end

 

por esta otra:

 function pasar()
pad = Controls.read()
if pad:cross()  and fondo <= 0 then
   fondo = 1
end
if fondo == 1 then
   screen:blit(0, 0, aristaalcubo)
 end
screen.waitVblankStart()
screen.flip()
end

Imagen de P22

Pero de ese modo solo se

Pero de ese modo solo se cambiaria el fondo cuando esta pulsando X ( pad:cross() = true ) de tal modo que en cuanto lo suelte se va a cambiar.

Saludos


¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.

Mi review: iPod Touch 4G

Imagen de Tanos

No

No si la variable fondo está fuera del bucle principal, en su defecto sí, sólo se mostraría al pulsar X.

Imagen de P22

he encontrado tu error

Lo que te falla es que tu pones esto:

if pad:cross() then

   screen:blit(0,0,primera)

end

de tal forma que solo cambia de imgn si le pulsas X en cuanto sueltas vuelve a la primera.

Prueba con esto:

fondo = 0

if pad:cross() then

   fondo = fondo + 1

end

if fondo = 0 carga esta imagen end

if fondo = 1 carga la otra end

A no ser que lo que tu querias fuera eso

Saludsp


¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.

Mi review: iPod Touch 4G

Imagen de PSPNOVATO

No funciona aún :(

Lo he hecho como tu me has dicho, aún así, sigue sin cambiar la pantalla cuando pulso "X". Lo dejo:

--Comandos principales
white = Color.new(255,255,255)
red = Color.new(255,0,0)
black = Color.new(0,0,0)
blue = Color.new(0,0,255)
font = Font.load("font.ttf")
font:setPixelSizes(0,50)
puntos = 0
fondo = 0
welcomenow = Image.load("entrenamientolua.png")
pulsastart = Image.load("fulsastart.png")
primera = Image.load("aristaalcubo.png")
oldpad = Controls.read()

function pasar()
pad = Controls.read()
if pad:cross() and oldpad:cross() ~= pad:cross() and fondo <= 0 then
   fondo = fondo + 1
   end
if fondo == 1 then
   screen:blit(0, 0, aristaalcubo)
   end
screen.waitVblankStart()
screen.flip()
end

--Pantalla de bienvenida
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, pulsastart)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()

while true do
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, pulsastart)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
end

function pasar()
end

También he intentado hacer que se active al pulsar "X", una sola vez, aunque, no sé si me ha salido bien. Saludos, PSPNOVATO. 


Imagen de Tanos

Es muy evidente

Mira tu Bucle Principal:

while true do
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, pulsastart)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
end

function pasar()
end

Cámbialo por esto:

while true do
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, pulsastart)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()

pasar()

end

 

 

Imagen de P22

Te falta poner el end de la

Te falta poner el end de la function pasar() y por otra parte aunquehasta que no te funcione no lo vas a descubrir , en la ultima linea en ve de poner pasar() pon function pasar() que si no no tira

 

 

Saludos , P22


¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.

Mi review: iPod Touch 4G

Imagen de Tanos

Erróneo

Está bien tu corrección excepto lo de la función, así como lo tiene está perfecto, está llamando a la función (Supongo) no declarándola.

Imagen de PSPNOVATO

No hace nada especial

Ya lo he puesto como me habéis dicho los dos (gracias, ¡pensaba que nadie iba a contestar!), pero por más que pulso "X", no cambia el fondo. Os dejo el código para ver que estoy haciendo mal ;) :

--Comandos principales
white = Color.new(255,255,255)
red = Color.new(255,0,0)
black = Color.new(0,0,0)
blue = Color.new(0,0,255)
font = Font.load("font.ttf")
font:setPixelSizes(0,50)
puntos = 0
welcomenow = Image.load("entrenamientolua.png")
pulsastart = Image.load("fulsastart.png")
primera = Image.load("aristaalcubo.png")
oldpad = Controls.read()

function pasar()
pad = Controls.read()
if pad:cross() then
screen:blit(0, 0, primera)
screen.waitVblankStart()
screen.flip()
end
end

--Pantalla de bienvenida
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, pulsastart)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()

while true do
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, pulsastart)
screen.waitVblankStart()
screen.flip()
screen.waitVblankStart(80)
screen:blit(0, 0, welcomenow)
screen.waitVblankStart()
screen.flip()
function pasar()
end
end


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.