Abril 29, 2015, 02:39:56 PM Ultima modificación: Abril 29, 2015, 03:07:07 PM por matiascarpello
Hola comunidad. Llegue a un punto en el que me di cuenta que todos los juegos que realizaba eran de estilo plataformas, aventura. Hoy he decidido realizar algo totalmente distinto y de paso me ayudara a aprender nuevos conceptos en Game Maker.

Quiero crear un juego de trivia, es decir, de preguntas y respuestas para Android y será offline, es decir, el usuario no necesitara conexión como muchas app en las tiendas para funcionar.

El juego que estoy haciendo tendrá 300 preguntas aproximadamente y lo que necesito es justamente, como puedo hacer para que se dibuje al azar una pregunta entre esas 300 preguntas.

Lógicamente sería fácil hacer 300 objetos y que cada uno de esos objetos dibuje una pregunta. Entonces directamente se generaría al azar 1 objeto entre 300 objetos. Pero eso sería una locura y perjudicar el rendimiento del juego con tantos objetos habiendo seguramente mejores formas de hacerlo.

Y también me gustaría, o no se si sea mejor, que esas preguntas las obtenga de un archivo ini.

Hola, obtener de un ini, seria relativamente fácil. Mira
EL INI
[preguntas]
1="primera pregunta"
2="segunda pregunta"
así sucesivamente hasta 300 por ejemplo

Luego para leer
listapregunta = ds_list_create  (o algo asi, no estoy en el pc ahora mismo)
ini_open(nombre.ini)
for contador=1; constador < 300; contador+=1
{
listapregunta(contador)= ini_read_string("preguntas", string(contador),0)
}

//Con esto o que hace es leer hasta 300, todas las preguntas y guardarlas en una lista.
Ahora solo falta elegir una al azar. Hay un función para elegir una al azar, pero no me acuerdo ahora, shuffle list, o algo asi.

También puede hacer    pregunta = irandom(1-300)
textoamostrar = listapregunta(pregunta)

Con eso ya haces lo que quieres, el problema, es poner las respuestas, o averiguar cual respuesta es la buena. Sería cuestión de hacer mas cosas.

Espero te sirva, ahh, y si algún código esta mal escrito que alguien lo corrija, estoy escribiendo de memoria.



Aquí dejo un ejemplo que, como mencionó arcangelcaos, usa una ds_list para obtener las preguntas en orden aleatorio.

Hola Amigo !!! Puedo darte la solucion...

Yo ya he practicado con eso del azar en juegos y me a ido bien jaja no es por agrandarme sino que he tenido suerte de descubrirlo xD bueno..

Despues que hayas creado los 300 objetos con preguntas distintas.. crea 1 objeto mas que se llame "obj_control_preg" asi facilito jaja y pones en "event create" lo siguiente..

Abre un Execute code y escribe:

global.Question = 0
global.Question = random(300)

if global.Question > 300
{global.Question = 300 }

if global.Question < 1
{global.Question = 1}

eso es para que se eliga al azar entre 1 y 300, porque el 0 no cuenta como pregunta.bueno
ahora, empieza la parte donde tienes que actuar como un todo programador y tomarte tu tiempo de escribir un poquito jaja

ahora ya hecho eso, abre otro Execute code nuevo, en el mismo event_create, debajo del que acabaste de hacer.. en orden.

escribe asi sucesibamente como yo: segun el numero del global.Question es la pregunta.

osea, si el global.Question = 1 la pregunta será la 1, si es de 2 será la 2 y asi siempre ok? quedaría como aqui esta.

if global.Question = 1
{instance_create(x,y, AQUI EL NOMBRE DEL OBJETO PREGUNTA 1)}

if global.Question = 2
{instance_create(x,y, AQUI EL NOMBRE DEL OBJETO PREGUNTA 2)}

if global.Question = 3
{instance_create(x,y, AQUI EL NOMBRE DEL OBJETO PREGUNTA 3)}

y sigues asi hasta llegar a las 300 preguntas, te has tomado el tiempo de hacer 300 objetos ahora has esto tambien jajajaj pero es un rato muy corto, porque es mas facil... ahora solo escribe y todo saldrá como querias.

y si tienes otros inconvenientes como en todo juego suele pasar, y no sabes como repararlos. dejame decirte esto:

Por Pregunta sobre este tema o otras dudas que tengas, te hago saber que me llamo Luiber Extrenzas en Facebook, AGREGAME! yo aqui te dejo el Link, cuando quieras, a las ordenes (Y)

https://www.facebook.com/profile.php?id=100008220635391