No hay que complicarse haciendo una función que reemplace a cada línea, ya que simplemente complica su lectura y ocupa más espacio, no en RAM, sino espacio físico. Cuando veas codes muuuuuy largos para algo sencillo, es que algo está de más.
Por ejemplo, veo que tienes una función para cada pregunta/respuesta, funciones del tipo preguntaXY() donde X es la pregunta y Y la respuesta... para esto puedes usar arrays en dos dimensiones, de tal manera que quede una sola tabla del tipo Respuesta[X][Y].
El fallo que encontré, es este: image.blit("flecha.png",selectorZ[1].x,selectorZ[1].y), las imágenes tienes que cargarlas y almacenarlas en una variable para poderlas usar, no puedes blitear directamente desde la ms. En tu caso sería Selector, no "flecha.png"
Y también que las funciones respuestaX no devuelven nada, sin embargo haces un "if controls.press("cross") and respuesta1() then" donde respuestaX será nil siempre ya que no veo ningún return...
--Prueba tu oido
mostrar=false
AB=false
BC=false
Acertaste ="Acertaste!, presiona R para continuar"
Fallaste ="Fallaste"
negro = color.new(0,0,0)
Fondo = image.load("fondo.png")
Selector = image.load("flecha.png")
altoPantalla =272 - Selector:width()
pactual =1-- pregunta actual, usaremos esto para saber en que pregunta vamos
ractual =1-- para elegir la respuesta
acierto =false-- esta variable, para saber si acertó o no
Pregunta ={}
Pregunta[1]="¿Como se llama el cantante de esta cancion?"
Pregunta[2]="¿El cantante Madnass, como se llama esta cancion?"
Pregunta[3]="¿Como se llama el grupo de esta cancion?"
Respuesta ={}
Respuesta[1]={}
Respuesta[1][1]="Chiddy bang"
Respuesta[1][2]="Eminem"
Respuesta[1][3]="Psprekiem"
Respuesta[1][4]="Lil wayne"
Respuesta[1].correct =1-- la correcta, es la 1º, usaremos esta variable para comparar luego con ractual, si son iguales, acierta
Respuesta[2]={}
Respuesta[2][1]="Ni idea"
Respuesta[2][2]="Es un remix?"
Respuesta[2][3]="Mi lugar"
Respuesta[2][4]="El origen"
Respuesta[2].correct =3
Respuesta[3]={}
Respuesta[3][1]="hum... me suena a chili con carnage"
Respuesta[3][2]="Nautilus?"
Respuesta[3][3]="Deliquents habits"
Respuesta[3][4]="Violadores del verso"
Respuesta[3].correct =3
selectorZ ={}
selectorZ[1]={ x =5, y =10}whiletruedo--screen.clear(negro) -- esto no hace falta, a menos de que negro, no sea 0,0,0, ya que en el flip, se limpia la pantalla precisamente de ese color
image.blit(Fondo,0,0)-- supongo que tu fondo mide 480 x 272, si es así, pongo 0,0 ya que las imágenes se muestran desde su esquina superior derecha ubicada en el punto que le das al blit (en este caso, 0,0)
controls.read()-- no se muy bien como has puesto el selector, así que lo dejo tal como estáif controls.down()and selectorZ[1].y < altoPantalla then
selectorZ[1].y = selectorZ[1].y + 40endif controls.up()and selectorZ[1].y >0then
selectorZ[1].y = selectorZ[1].y - 40end-- akí, añado código para seleccionar la respuesta limitando la cantidad de opciones, para que no se salga de la tablaif controls.press("up")then
ract =math.max(ract - 1, 1)-- aquí lo que hago es, resto 1 a ract, si el resultado, es menor que el segundo número (en nuestro caso es 1), entonces, que se quede con el 1elseif controls.press("down")then
ract =math.min(ract + 1, #Respuesta[pactual])-- acá otro límite, en este caso suma 1, si ese resultado se pasa de la cantidad de respuestas que hay en la tabla, entonces se queda con el número de elementos de la tablaend
screen.print(200,100,Pregunta[pactual])-- comenté todo esto porque ya está hecho en el for--screen.print(10,10,Respuesta[actual][1])--screen.print(10,50,Respuesta[actual][2])--screen.print(10,90,Respuesta[actual][3])--screen.print(10,130,Respuesta[actual][4])for i=1,#Respuesta[pactual]do-- esto, es un ciclo for, usa un índice que le he puesto i, lo que hace es, ir desde el 1 que puse, hasta terminar de recorrer la tabla (#tabla devuelve la cantidad de elementos de la misma)
screen.print(10,10+(i-1)*40,Respuesta[pactual][i])-- fíjate como cambio la coordenada Y para que las respuestas vayan separadas 40 píxeles cada una, 10+(i-1)*40 es la fórmula de lo que está allí arriba. Veamos...-- 1º vuelta, i vale 1, 10+(i-1)*40 = 10+(0)*40 = 10-- 2º vuelta, i vale 2, 10+(i-1)*40 = 10+(1)*40 = 10+40 = 50-- 3º vuelta, i vale 3, 10+(i-1)*40 = 10+(2)*40 = 10+80 = 90-- 4º vuelta, i vale 4, 10+(i-1)*40 = 10+(3)*40 = 10+120 = 130end
image.blit(Selector,selectorZ[1].x,selectorZ[1].y)if controls.press("cross")and ractual == Respuesta[pactual].correct then-- si es la respuesta correcta...-- creo que las siguientes tres líneas, deberías meterlas en otro bucle, pero, seguiré la estructura tal y como la tenías
screen.clear(negro)
screen.print(300,200,Acertaste)-- bingo!
acierto =true-- acertó!-- explico, lo suyo sería hacer algo así, en lugar de las líneas de arriba:--[[
while true do
controls.read()
screen.print(300,200,Acertaste) -- bingo!
if controls.press("r") then
pactual = pactual + 1
break -- rompemos el bucle (forzamos la salida)
end
screen.flip()
end
-- y con eso ya no hay necesidad de la variable acierto, ni del código de abajo cuando presione r
--]]else-- sino
screen.clear(negro)
screen.print(300,200,Fallaste)-- :(-- akí también debería ser un bucleend-- con el bucle, este if ya no es necesarioif controls.press("r")and acierto then-- si presionó R y acertó
pactual = pactual + 1-- siguiente pregunta! >:)
acierto =false-- claro, aun ni responde la siguiente preguntaend
screen.flip()end
Allí he dejado el code corregido, y con algunos ajustes, léelo despacio, y si algo no comprendes del todo, coméntalo ;)
Ah, y una cosa más, acostumbren a identar el código, que el TAB no muerde...
Pon while true do en cada funcion de principio y screen.flip(), o nunca se pondran los screen.print
Ej
function nivel1()whiletruedo
screen.printxxxxxxxx
screen.flip()end
Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP
Intenta esto pon todas las funciones en otro script y el script principal de principio pon dofile("funciones") "funciones" se llamará tu otro script.
Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP
No creo que sea por que esta cargado el script el mio tiene mas de 20.000 lineas y no me pasa eso (debo simplificarlo XD) seria mejor que diera mas detalles de como es que sea apaga la psp, en que momento, una duda por que tanto screen.clear(negro)?
se apaga antes de cargarse, y los screen clear es para cuando pulse las "preguntas" se quiten para que solo se quede la palanra "Acertaste!", duda que puse en otro post, hay alguna forma de hacerlo sin tanto screen.clear?
Los hilos no se cierran
Los hilos no se cierran cuando se resuelve la duda. Sólo se cierran cuando incumplen (demasiado) las normas en algunos casos.
mi nick u.u
mi nick es Chimecho! no se pq la gente se empeña en escribirlo mal u.u
ups
lo siento, es que pega chimencho, pero ya esta editado
Eso se puede optimizar a
Eso se puede optimizar a saco, cosa que no haré porqué ya será la cuarta o quinta vez que hago un juego de esos a alguien.
Tampoco te he pedido que lo hagas
...
Queria decir optimizar/hacer
Queria decir optimizar/hacer que funcione. Y por cierto ya es hora de que pares de hacer preguntas por cada duda que tienes, ¿no?
Este es un foro
de ayuda. Tranquilo no voy ha hacer mas
Código enoooorme a la vista xD
No hay que complicarse haciendo una función que reemplace a cada línea, ya que simplemente complica su lectura y ocupa más espacio, no en RAM, sino espacio físico. Cuando veas codes muuuuuy largos para algo sencillo, es que algo está de más.
Por ejemplo, veo que tienes una función para cada pregunta/respuesta, funciones del tipo preguntaXY() donde X es la pregunta y Y la respuesta... para esto puedes usar arrays en dos dimensiones, de tal manera que quede una sola tabla del tipo Respuesta[X][Y].
El fallo que encontré, es este: image.blit("flecha.png",selectorZ[1].x,selectorZ[1].y), las imágenes tienes que cargarlas y almacenarlas en una variable para poderlas usar, no puedes blitear directamente desde la ms. En tu caso sería Selector, no "flecha.png"
Y también que las funciones respuestaX no devuelven nada, sin embargo haces un "if controls.press("cross") and respuesta1() then" donde respuestaX será nil siempre ya que no veo ningún return...
Allí he dejado el code corregido, y con algunos ajustes, léelo despacio, y si algo no comprendes del todo, coméntalo ;)
Ah, y una cosa más, acostumbren a identar el código, que el TAB no muerde...
Saludos!
PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]
07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD
Recuerda: Sé el intérprete -_-
fiuuuu
Luego lo vere, pero dime que es pactual? y ractual? y ract?
Hasta luego
Gracias por todo
:S
jaja me equivoqué, donde diga ract, es ractual, ahi arribita al comienzo comenté que eran
Edito: Pon while true do en
Edito:
Pon while true do en cada funcion de principio y screen.flip(), o nunca se pondran los screen.print
Ej
Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP
no
si fuera así tendría un while, un flip y un end por cada print, basta con tan solo imprimirlos, y al final un sólo flip para mostrar los cambios
PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]
07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD
Recuerda: Sé el intérprete -_-
entonces
cuantos end tengo que poner!???
Depende de cuantas funciones
Depende de cuantas funciones etc tengas eso no creo que tenga que explicarlo
tengo que meterle
20 ends al final del codigo? no?
No , creo que funciona , por
No , creo que funciona , por cada
If ... then ...
un end
I por cada while true do .. otro end
Es decir si ienes un while true do i 20 if ...then .... son 21 end xD
Creo .. no estoi del todo seguro ..
Saludos
Isaac Newton: "Lo que sabemos es una gota de agua; lo que ignoramos es el océano".
Creo que el script esta muy
Creo que el script esta muy cargado
Intenta esto pon todas las funciones en otro script y el script principal de principio pon dofile("funciones") "funciones" se llamará tu otro script.
Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP
No creo
No creo que sea por que esta cargado el script el mio tiene mas de 20.000 lineas y no me pasa eso (debo simplificarlo XD) seria mejor que diera mas detalles de como es que sea apaga la psp, en que momento, una duda por que tanto screen.clear(negro)?
Mis Homebrew´s
Vale
se apaga antes de cargarse, y los screen clear es para cuando pulse las "preguntas" se quiten para que solo se quede la palanra "Acertaste!", duda que puse en otro post, hay alguna forma de hacerlo sin tanto screen.clear?
Vale
pero como lo cargo?
En el while true do que pongo para que se cargue?