Anuncios Google

No va simplemente se bloquea y apaga(lua)

Pues aqui esta el script pero a la hora de hacerlo funcionar no me dice ningun error el luaplayer si no que se bloquea y se apaga al rato

--Idea original de DeViAnte
--completado por tu_yo(lo ha intentado)
 
acertaste = Image.load("ms0:/PSP/GAME/LuaPlayerHM7/acertaste.png");
fallaste = Image.load("ms0:/PSP/GAME/LuaPlayerHM7/fallaste.png");
preguntas = {};
respuestas = {};
table.insert(preguntas,Image.load("ms0:/PSP/GAME/LuaPlayerHM7/pregunta1.png"));
table.insert(respuestas, { { 0, "Del cielo" }, { 0, "Del huerto" }, { 1, "De sus madres" }, { 0, "Vienen del espacio exterior" } } );
 
voypor = 1;
total = math.min( table.maxn(preguntas), table.maxn(respuestas) );
math.randomseed(os.time());
 
while voypor <= total do 
 
 
      pad = Controls.read()
      while true do
      oldpad = pad
      screen:clear()
 
         pad = Controls.read()  
         screen:blit(1,1, preguntas[voypor]);
 
          cross = respuestas[1][1]
          circle = respuestas[1][2] 
          triangle = respuestas[1][3] 
          square = respuestas[1][4] 
 
 
       if pad:cross() and not oldpad:cross() then 
         if respuestas[voypor][cross][respuestas[1][1]] == 1 then preguntas[1] = acertaste else preguntas[1] = fallaste end
       end
 
       if pad:circle() and not oldpad:circle() then 
         if respuestas[voypor][circle][respuestas[1][2]] == 1 then preguntas[1] = acertaste else preguntas[1] = fallaste end 
       end
 
       if pad:triangle() and oldpad:triangle() then 
         if respuestas[voypor][triangle][respuestas[1][3]] == 1 then preguntas[1] = acertaste else preguntas[1] = fallaste end
       end
 
       if pad:square() and oldpad:square() then 
         if respuestas[voypor][square][respuestas[1][4]] == 1 then preguntas[1] = acertaste else preguntas[1] = fallaste end 
       end
 
      end 
      voypor = voypor + 1; 
   oldpad = pad;
end


PSP Slim TA-085v2 :OFW 3.72->3.80m33->3.90m33->4.01m33->5.00m33-6+Parche 5.00m33-7+5.00prometheus-3 v4+SNDC XMB mod->6.37ME-7->6.37ME-8->6.38ME->6.38ME-2->6.3ME-3->6.39ME->6.39ME-2->6.39ME-2 recovery fix->6.39ME-3->6.39ME-4->6.39ME-5->6.39ME->6.39ME-7->6.60ME-1.6

NDS Lite: Acekard2i v1.8.8        ¡¡¡CUIDEN LA ORTOGRAFÍA!!!
Sony xperia neo android 2.3.3 root
Galaxy nexus ICS 4.0.2 root
Wii negra v4.2E->HBC 1.0.8 (IOS58)+HerMes Mod (222,223,224,225,260)+D2X 7 Final (245,246,247,248,249,250)


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 DeViaNTe

Explicación, LINEA A LINEA del código en cuestión.

Viendo que sacáis fallos de dónde no los hay... procedo a comentar y CORREGIR (cada vez se parece menos ese código al que te dí...) , línea por línea, el código.

-- Comentario del código, línea a línea.
 
acertaste = Image.load("ms0:/PSP/GAME/LuaPlayerHM7/acertaste.png"); -- tu_yo addon, carga imagen. OK
fallaste = Image.load("ms0:/PSP/GAME/LuaPlayerHM7/fallaste.png");   -- tu_yo addon, carga imagen. OK
 
-- Creación de dos tablas vacías.
preguntas = {};
respuestas = {};
 
-- Insertamos here... las preguntas. Si, en imagen mismamente...
table.insert(preguntas,Image.load("ms0:/PSP/GAME/LuaPlayerHM7/pregunta1.png"));
table.insert(preguntas,Image.load("ms0:/PSP/GAME/LuaPlayerHM7/pregunta2.png"));
table.insert(preguntas,Image.load("ms0:/PSP/GAME/LuaPlayerHM7/pregunta3.png"));
table.insert(preguntas,Image.load("ms0:/PSP/GAME/LuaPlayerHM7/pregunta4.png"));
table.insert(preguntas,Image.load("ms0:/PSP/GAME/LuaPlayerHM7/pregunta5.png"));
--[...] 
-- En caso de HM, pues hasta las que aguante, en otro luaplayer, recomendaría
-- dejar sólo la ruta, y cargarlas pregunta a pregunta, dónde indicaré más adelante.
 
-- Insertamos, las respuestas. No sobreescribimos, no borramos nada, simplemente
-- insertamos, al final, una respuesta, que es una tabla. En lua es completamente
-- legal insertar tablas en tablas, y mas tablas en otras tablas... y tablas sobre tablas...
-- Hasta k nos quedemos sin memoria, o sin imaginación.
-- Formato de la respuesta:
--   { -- array con CUATRO posibles soluciones
--  { ¿CORRECTA?, TEXTO_RESPUESTA }
--  { ¿CORRECTA?, TEXTO_RESPUESTA }
--  { ¿CORRECTA?, TEXTO_RESPUESTA }
--  { ¿CORRECTA?, TEXTO_RESPUESTA }
-- }
-- Correcta será un número: 0 = incorrecta, 1 = correcta.
-- Texto pues... queda claro, la respuesta en sí, que el usuario leerá.
 
table.insert(respuestas, { { 0, "Del cielo" }, { 0, "Del huerto" }, { 1, "De sus madres" }, { 0, "Vienen del espacio exterior" } } );
table.insert(respuestas, { { 0, "Del cielo" }, { 0, "Del huerto" }, { 1, "De sus madres" }, { 0, "Vienen del espacio exterior" } } );
table.insert(respuestas, { { 0, "Del cielo" }, { 0, "Del huerto" }, { 1, "De sus madres" }, { 0, "Vienen del espacio exterior" } } );
table.insert(respuestas, { { 0, "Del cielo" }, { 0, "Del huerto" }, { 1, "De sus madres" }, { 0, "Vienen del espacio exterior" } } );
 
 
-- INICIAMOS aquí nuestro script, bien, preparemos las variables...
voypor = 1; -- Si, akabamos de empezar, vamos por la PRIMERA pregunta.
 
-- Ey! Esto pinta raro... Pero NO, no habrán más repuestas que soluciones.
-- Pues son tablas, no se cuentan por separado, se cuentan por insercioens en
-- la tabla madre respuestas, no dentro de cada sub-tabla.
-- Igualmente, este math.min() es un preventor por si acaso, alguien se cuela
-- escribiendo distinto número de preguntas y de respuestas, así, sólo se mostraran
-- las coincidientes. ( Si las insertó en el orden correcto ).
total = math.min( table.maxn(preguntas), table.maxn(respuestas) );
 
-- Simple sistema de puntuación.
aciertos = 0;
fallos = 0;
 
-- Simple aleatorización de la semilla generadora de números aleatorios.
math.randomseed(os.time());
 
-- Iniciar pad y oldpad. Mera simplificación para que luego no nos dé
-- que oldpad es nil en las próximas comprobaciones. (pues se setea el último en cada ciclo). 
pad = Controls.read();
oldpad = Controls.read();
 
-- Mientras VAYA POR una pregunta que sea MAS PEQUEÑA O IGUAL que la ULTIMA. ( lógico )
while voypor <= total do 
 
	-- Aquí iria la inialización del frame, por ejemplo la carga de la imagen
	-- de la pregunta como anteriormente comenté, o lo que queramos. Aquí preparamos
	-- todo para la pregunta que vendrá a continuación.
 
	-- ALEATORIZACIÓN DE RESPUESTA EN BOTÓN DISTINTO CADA VEZ.
	-- t == triangulo
	-- c == cuadrado
	-- r == redonda o círculo
	-- x == cruz o equis.
 
	t,c,r,x = nil, nil, nil, nil;
 
	-- Ei! 3 intentos por ciclo? (dev addon de ahora...)
	intentos = 3;
 
	-- MIENTRAS "el boton" sea igual a cualquier otro boton, o vacío HACER dar número aleatorio. FIN
	-- Al final de este bloque los botones tendrán un número del 1 al 4, pero TODOS DISTINTOS LOS UNOS
	-- DE LOS OTROS. Gracias.
	while ( t==nil or t==c or t==r or t==x ) do t = math.random(1,4); end
	while ( c==nil or c==t or c==r or c==x ) do x = math.random(1,4); end
	while ( r==nil or r==t or r==c or r==x ) do r = math.random(1,4); end
	while ( x==nil or x==t or x==c or x==r ) do x = math.random(1,4); end
 
	-- YA tenemos los botones aleatorizados. podemos comenzar a mostrar la pregunta.
 
	-- MIENTRAS SIEMPRE HACER
	while true do
		pad = Controls.read();			-- Leer controles...
		screen:clear();					-- Limpiar pantalla.
		screen:blit(1,1, preguntas[voypor]);	-- Mostrar IMAGEN de la PREGUNTA en la que VOY POR.
 
		-- No recuerdo la función del texto. Pondré "PRINTEAR", ya lo cambiais por lo que sea en HM.
		-- Recordemos que las repuestas, tienen 4 sub-tablas (los 4 botones)
		-- Y la tabla de cada boton es [1] = correcto? [2] = texto.
		printear(30,130, " X :"..respuestas[voypor][x][2]);
		printear(30,160, " [] : "..respuestas[voypor][c][2]);
		printear(30,190, " () : "..respuestas[voypor][r][2]);
		printear(30,220, " /\ : "..respuestas[voypor][t][2]);
 
		-- Texto pintado, imagen pintada... volteamos la pantalla.
		screen.Waitvblankstart(); -- o como sescriba...
		screen.flip(); -- idem.
 
		-- De los controles sólo explicaré uno, el resto es igual,
		-- cambiando simplemente la variable.
 
		-- SI pulsamos X Y NO pulsabamos X antes HACER
		if pad:cross() and not oldpad:cross() then
			-- Si la repuesta en la que voy por, de entre ellas,
			-- la que es la X, es correcta...
			if respuestas[voypor][x][1] == 1 then 
				system.message("HAS ACERTAO!",0);
				aciertos = aciertos + 1;
				-- EI! ¿ un break ? que se ha roto?
				-- Pues el WHILE TRUE. Se rompe. así k pasariamos a la liberacion del
				-- frame actual, más abajo, ya lo volveré a indicar.
				break;
			else 
				-- Pues fallaste, un intento menos, y seguimos aquí. no break.
				fallos = fallos + 1;
				intentos = intentos - 1;
			end
		end
 
		if pad:circle() and not oldpad:circle() then
			if respuestas[voypor][r][1] == 1 then
				system.message("HAS ACERTAO!",0);
				aciertos = aciertos + 1;
				break;
			else 
				fallos = fallos + 1;
				intentos = intentos - 1;
			end
		end
 
		if pad:triangle() and not oldpad:triangle() then
			if respuestas[voypor][t][1] == 1 then
				system.message("HAS ACERTAO!",0);
				aciertos = aciertos + 1;
				break;
			else 
				fallos = fallos + 1;
				intentos = intentos - 1;
			end
		end
 
		if pad:square() and not oldpad:square() then
			if respuestas[voypor][c][1] == 1 then
				system.message("HAS ACERTAO!",0);
				aciertos = aciertos + 1;
				break;
			else 
				fallos = fallos + 1;
				intentos = intentos - 1;
			end
		end
 
	if intentos <= 0 then break; end -- NO MAS INTENTOS. SIguienteee!
 
	oldpad = pad;	-- Viejo pad...
	-- AKI AKABA EL WHILE TRUE
	end 
 
	-- AKI ESTAMOS, DESPUES DE HACER BREAK!
	-- Asi que aquí liberamos, si necesitaramos, la imagen del frame anterior.
 
	-- Y preparamos las nuevas variables...
	voypor = voypor + 1;	-- Siguiente preguntaa
end
 
-- AKI FIN DE LAS PREGUNTAS, MOSTRAR PUNTUACIÓN
-- NO SE... TABLAS DE MEJORES RESULTADOS...
-- Y ALGUNA PANTALLITA DE CREDITOS.


Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es

Imagen de Tu_yo

Lloro de felicidad

gracias (de nuevo) DeViante eres dios y los demas tambien gracias por optimizar el codigo por users como vosotros es posible que se creen homebrews pero me puedes explicar mejor esta parte?

printear(30,130, " X :"..respuestas[voypor][x][2]);
printear(30,160, " [] : "..respuestas[voypor][c][2]);
printear(30,190, " () : "..respuestas[voypor][r][2]);
printear(30,220, " /\ : "..respuestas[voypor][t][2]);
 
aun la estoy digeriendo jeje 

Gracias hay van unos bitos


PSP Slim TA-085v2 :OFW 3.72->3.80m33->3.90m33->4.01m33->5.00m33-6+Parche 5.00m33-7+5.00prometheus-3 v4+SNDC XMB mod->6.37ME-7->6.37ME-8->6.38ME->6.38ME-2->6.3ME-3->6.39ME->6.39ME-2->6.39ME-2 recovery fix->6.39ME-3->6.39ME-4->6.39ME-5->6.39ME->6.39ME-7->6.60ME-1.6

NDS Lite: Acekard2i v1.8.8        ¡¡¡CUIDEN LA ORTOGRAFÍA!!!
Sony xperia neo android 2.3.3 root
Galaxy nexus ICS 4.0.2 root
Wii negra v4.2E->HBC 1.0.8 (IOS58)+HerMes Mod (222,223,224,225,260)+D2X 7 Final (245,246,247,248,249,250)

Imagen de unai.

printear(30,220, " /\ :

printear(30,220, " /\ : "..respuestas[voypor][t][2]);

Es unaa chorrada, pero las chorradas hacen que aplicaciones dejen de funcionar ;). Es así:

printear(30,220, " /\\ : "..respuestas[voypor][t][2]);
 



Offspring - Rise and Fall, Rage and Grace
Dark_AleX
21st Century Breakdown
American Idiot

SceneBET y PSP Euskaraz 2... ¿Pronto?

loko es asi

screen:print(30,220, "..........

Imagen de pspgorrister

Bueno, respondiendo a tu

Bueno, respondiendo a tu post:

table.insert(respuestas, { { 0, "Del cielo" }, { 0, "Del huerto" }, { 1, "De sus madres" }, { 0, "Vienen del espacio exterior" } } );
table.insert(respuestas, { { 0, "Del cielo" }, { 0, "Del huerto" }, { 1, "De sus madres" }, { 0, "Vienen del espacio exterior" } } );
table.insert(respuestas, { { 0, "Del cielo" }, { 0, "Del huerto" }, { 1, "De sus madres" }, { 0, "Vienen del espacio exterior" } } );
table.insert(respuestas, { { 0, "Del cielo" }, { 0, "Del huerto" }, { 1, "De sus madres" }, { 0, "Vienen del espacio exterior" } } );
 

Lioso, sólo hay una opción correcta, si tienes 8 respuestas no tiene que ir diciendo cuales son falsas y cuales no

table.insert(respuestas, { "Del cielo",  "Del huerto", "De sus madres", "Vienen del espacio exterior" }, la_correcta );
table.insert(respuestas, { "Del cielo",  "Del huerto", "De sus madres", "Vienen del espacio exterior" }, la_correcta );
 

Mucho más sencillo, además de que se mandan 2 elementos, uno con las repuestas (sólo las repuestas) y otro con un num. que es la respuesta correcta. Es decir respuestas es una tabla bidimensional, en la que su primer elementos es a su vez un vector.

-- Ey! Esto pinta raro... Pero NO, no habrán más repuestas que soluciones.
-- Pues son tablas, no se cuentan por separado, se cuentan por insercioens en
-- la tabla madre respuestas, no dentro de cada sub-tabla.
-- Igualmente, este math.min() es un preventor por si acaso, alguien se cuela
-- escribiendo distinto número de preguntas y de respuestas, así, sólo se mostraran
-- las coincidientes. ( Si las insertó en el orden correcto ).
total = math.min( table.maxn(preguntas), table.maxn(respuestas) );

A ver, no entiendo si "alguien se cuela", estamos mostrando preguntas, independientemente de las respuestas que tengan. Es mezclar peras y manzanas, si se hacen mezclándolas algo va mal. Y si alguien "se cuela", pues entonces es que habría "menos posibles respuestas que preguntas" ¿¿¿¿¿¿Habría preguntas sin respuestas????. Es que estamos haciendo un bucle "con las preguntas"
idependientemente de las respuestas que tengan.

total = table.maxn(preguntas)

Teniendo en cuenta lo que he puesto de poner la respuesta aparte, lo de numerar triángulo, cuadrado, etc. sobra, ese código  no hace falta, con sólo unas pocas lineas se hace todo lo que está entre "screen:flip()" e "if intentos <= 0"

local respuesta = 0
if pad:cross() and not oldpad:cross() then respuesta = 1 end
if pad:circle() and not oldpad:circle() then respuesta = 2 end
if pad:triangle() and not oldpad:circle() then respuesta = 3 end
if pad:square() and not oldpad:square() then respuesta = 4 end
if respuesta == respuestas[voypor][2] then --Segúndo parámetro (se puede hacer relacionar y ponerle un tag)
    system.message("HAS ACERTAO!", 0);
    aciertos = aciertos + 1
else
    fallos = fallos +1
    intentos = intentos -1
end

El código no es que tuviera fallos (quitando lo último que comente "COMORR???"). De todas forma le aconsejo al creador de post que empieze por cosas más sencillas (100 primeros números primeros, etc.), porque se nota que esto no lo entiende bien.

Un saludo.

 

 


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de DeViaNTe

sep weno, si, claro, se puede

sep weno, si, claro, se puede optimizar bastante, total, lo hize con prisas, y no me paré en detalles como lo de la respuesta, separarla, :P.

Ya , lo de los controles, si, sería mucho más sencillo como tu pusiste, weno, kise darle un toke de aleatoriedad quizás sobrante.

Y bueno lo del math.min, es por si el "creador" del script, hacia 6 inserciones a la tabla preguntas, y 5 a la tabla de respuestas ( con prisas , que se le olvide, cualquier cosa, a saber ), pues que se autoajustara a 5 preguntas, para evitar un error feote de nil.

Si, también es otra pijada, pensando en "tiempo de diseño" eso sobra.

Pero weno, a parte de pijadas y tonterias, el código en sí no tenia muchos "fallos", pq ví que en este post le sacaron como... la tira y media de ellos... y me kedé ¿¿??, por eso respondí ya con esa aclaratoria.

Weno, tómense el post como: "tutorial para hacer quizzes aleatorios xD".


Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es

Imagen de unai.

Te faltan el screen.flip() y

Te faltan el screen.flip() y el screen.waitVblankStart(). Pequeños errores que te cuestan la aplicación XD

Suerte.

Imagen de Tu_yo

Vo de verdad

gracias lo probare asi seguro que es por eso (y por mas porque..) jeje

Imagen de moikop

Otra linea sin sentido...

table.insert(respuestas, { { 0, "Del cielo" }, { 0, "Del huerto" }, { 1, "De sus madres" }, { 0, "Vienen del espacio exterior" } } );

Estas sobreescribiendo varias vecez respuestas[0] (Es más, creo que en lua, las arrays se empiezan por [1]. (Al contrario de C, C++, PHP, Java, etc.., que empiezan por [0]...).

Un saludo.


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.

No preguntes por MP, mejor pregunta aquí.

Imagen de Chimecho

Pos...

De hecho no, lo que hace es añadir este array:

{ { 0, "Del cielo" },
   { 0, "Del huerto" },
   { 1, "De sus madres" },
   { 0, "Vienen del espacio exterior" } }

En respuestas[1], no se está reemplazando...

PD: Si, lua comienza por 1

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 -_-

Imagen de moikop

Error mio XD

(Por flick throughear XDDD). Creía que los números eran la posición en la tabla donde se insertaban XD

Un saludo.

Imagen de pspgorrister

Preguntas + respuestas (manzanas + peras)

Tienes un poco de cacao mental en esto:

total = math.min( table.maxn(preguntas), table.maxn(respuestas) );

SIEMPRE vas a tener más respuestas que preguntas, esa linea no tiene sentido.

Teniendo claro el punto anterior, la instruccion:

screen:blit(1,1, preguntas[voypor]);

Te dará error (ya no sé si el bloqueo es por eso, pero error da) ya que "voypor" son las preguntas y tú estás calculando con respuestas.

Para finalizar, y porque no quiero seguir viendo más ese código:

if respuestas[voypor][cross][respuestas[1][1]]

COMOR??. ¿Sabes lo que estás haciedo realmente, o vas picando código a ver lo que sale?

Un saludo

 

 


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de Tu_yo

Ya pero

las respuestas van dentro de otra tabla que esta dentro de la tabla respuestas
uf tendre que revisar mas el codigo

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.