Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: DaiGoN en Agosto 20, 2014, 07:04:57 PM

Título: draw_text desde un alarm con GML?
Publicado por: DaiGoN en Agosto 20, 2014, 07:04:57 PM
Hola!
Estoy montando un quiz y necesito sacar las preguntas y respuestas por pantalla con el draw text, pero estas preguntas se generan por código y no se como invocar al draw desde mi alarm del objeto.

Es decir, teniendo esto:

objPregunta.textoPregunta = global.pregunta;


Justo debajo quiero hacer algo como esto:

draw_text(objPregunta.x, objPregunta.y, string(objPregunta.textoPregunta));


El problema es que no me lo pinta porque tendría que invocarlo desde un evento Draw y estoy en un Alarm.


Supongo que tiene que ser muy simple, pero siempre he usado sprites para estas cosas
¿Como puedo solucionarlo?

Un saludo!
Título: Re:draw_text desde un alarm con GML?
Publicado por: DaiGoN en Agosto 20, 2014, 07:34:31 PM
Creo que he encontrado una forma pero es... bastante fea

He creado un objeto solo para el metodo Draw que a su vez llama a una función que pinta con los datos que le paso por globales

Para recibir los datos, este objeto lo creo así:

objPintarTexto.texto = objPregunta.textoPregunta;
instance_create( objPregunta.x-100, objPregunta.y-50, objPintarTexto );


Como digo, es feisimo pero creo que puede funcionar...

¿Alguna idea más limpia?

Un saludo!
Título: Re:draw_text desde un alarm con GML?
Publicado por: penumbra en Agosto 20, 2014, 08:00:27 PM
No sé por qué haces esto
objPintarTexto.texto = objPregunta.textoPregunta;

El objeto que dibuja el texto fácilmente puede ser el mismo que contenga la pregunta. Además, la mejor manera de manejar preguntas en un juego de este tipo es, en lugar de tener una pregunta individual en una variable, tener todas las preguntas almacenadas en un arreglo o ds_list/ds_map.
Título: Re:draw_text desde un alarm con GML?
Publicado por: Xizotono en Agosto 20, 2014, 08:42:51 PM
Cita de: penumbra en Agosto 20, 2014, 08:00:27 PM
No sé por qué haces esto
objPintarTexto.texto = objPregunta.textoPregunta;

El objeto que dibuja el texto fácilmente puede ser el mismo que contenga la pregunta. Además, la mejor manera de manejar preguntas en un juego de este tipo es, en lugar de tener una pregunta individual en una variable, tener todas las preguntas almacenadas en un arreglo o ds_list/ds_map.

Dejale que lo haga como quiera, a si se aprende xD.

Para como lo quieres tu, crea una variable por ejemplo : dibujar = 0;
En el alarm pones dibujar = 1
Y en draw pones un if dibujar  = 1 {codigo de dibujo}.

Despues para que se quite y demas pues haces que dibujar sea 0. Creo que funcionaria xd aunque yo el draw lo llevo verde xD.
Título: Re:draw_text desde un alarm con GML?
Publicado por: DaiGoN en Agosto 20, 2014, 09:48:20 PM
Hola!
El objetoPregunta tenía su sentido cuando el draw iba en el. Ahora ya no lo tiene ._.
Lo quitaré y tirare de las globales que se asignan antes

Todas las preguntas y respuestas las cargo al principio de la aplicacion en un archivo ini, para usarlas como una BBDD clave valor.
Los objetoPregunta, objetRespuesta1,etc , son los espacios donde se pinta la pregunta y sus diferentes opciones.

Cada pregunta tiene 5 respuestas, de las que recupero la correcta y 2 aleatoriamente de entre las otras 4.
El pintado que os enseño es el que se ejecuta despues de eso.

Con respecto a la variable dibujar, el draw actua como un step? es decir, en cuanto modifique esta variable aparecera el texto o tendre que invocar el draw de alguna forma?


*Por cierto, hay alguna forma de "split" o similar para cargar los datos desde un CSV? sino almacenar todas las preguntas es un poco engorroso...

Un saludo!!
Título: Re:draw_text desde un alarm con GML?
Publicado por: penumbra en Agosto 20, 2014, 10:02:56 PM
Sí, DRAW ocurre las mismas veces que STEP. Se puede usar DRAW como STEP pero no STEP como DRAW. Aunque no es recomendable poner mucho código en DRAW (como si fuera STEP) porque eso podría afectar la rapidez con la que se dibujan las cosas (aunque a mi nunca me ha pasado)

Cita de: DaiGoN en Agosto 20, 2014, 09:48:20 PM
*Por cierto, hay alguna forma de "split" o similar para cargar los datos desde un CSV? sino almacenar todas las preguntas es un poco engorroso...

Se pueden usar archivos de texto en lugar de archivos INI para crear un sistema de guardado similar a CSV. De que se puede, se puede, pero tú debes encargarte de diseñar el sistema de guardado con las funciones de archivo y de cadena de GMS, no hay una función que lo haga todo por si sola.