Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: peludo en Julio 17, 2015, 03:07:07 AM

Título: Esperar 2 segundos entre script y script
Publicado por: peludo en Julio 17, 2015, 03:07:07 AM
Hola amigos, he estado desarrollando varios scripts que tienen distintas funcionalidades y quiero que exista un tiempo de espera entre la llamada del primero y del segundo.

A muy grandes rasgos hay un script que comprueba sobre un grid si alguna celda de ese grid tiene algun vecino mirando para cada celda los dos vecinos de la derecha los dos vecinos de arriba los dos vecinos de la izquierda y los dos de abajo, en el caso que se formen lo que yo llamo lineas es decir la celda tiene 2 o mas vecinos pone todos esos valores a 0 en el grid.

El segundo script lo que hace es dejar el grid a ceros por arriba es decir baja los valores por columnas, para que las posiciones que se han quedado a 0 por el script anterior se reyenen con los valores que le quedan por arriba, quedando siempre asi todas las celdas vacias arriba.

Ahora bien este proceso lo debo repetir para recomprobar si al bajar las columnas se vuelven a generar lineas pero la transicion la hace muy muy rapido por lo cual necesito algun mecasino que me permita esperar para apreciar bien los cambios y decidir si son correctos o no!

Espero que alguien me pueda ayudar!

Muchas gracias a todos!
Título: Re:Esperar 2 segundos entre script y script
Publicado por: Clamud en Julio 18, 2015, 03:00:28 AM
Es necesario redibujar la ventana con cada cambio realizado, si los scripts funcionan con ciclos for (u otros ciclos) no es posible porque sólo se permite dibujar en los eventos Draw (en versiones anteriores a GMS si se podía). Lo mejor es usar una variable para indicar que se está haciendo el proceso de escaneo, durante ese tiempo los objetos no deben reaccionar a la interacción del jugador. Los ciclos deben ser "externos" de modo que se realicen en varios steps y así ejecutar el evento Draw varias veces hasta que se terminen. Por ejemplo, digamos que el controlador inicia el ciclo
[gml]
//Iniciar ciclo
global.ciclo = true;
global.i = 0;
[/gml]
y en el evento Step del controlador se modifica y se comprueba la variable global.i
[gml]
if( global.i < limite ) global.i++;
else global.ciclo = false;
[/gml]
las otras instancias pueden saltar los códigos de interacción con el jugador así
[gml]
if( global.ciclo ) exit;
[/gml]
Título: Re:Esperar 2 segundos entre script y script
Publicado por: peludo en Julio 18, 2015, 07:20:09 PM
Cita de: Clamud en Julio 18, 2015, 03:00:28 AM
Es necesario redibujar la ventana con cada cambio realizado, si los scripts funcionan con ciclos for (u otros ciclos) no es posible porque sólo se permite dibujar en los eventos Draw (en versiones anteriores a GMS si se podía). Lo mejor es usar una variable para indicar que se está haciendo el proceso de escaneo, durante ese tiempo los objetos no deben reaccionar a la interacción del jugador. Los ciclos deben ser "externos" de modo que se realicen en varios steps y así ejecutar el evento Draw varias veces hasta que se terminen. Por ejemplo, digamos que el controlador inicia el ciclo
[gml]
//Iniciar ciclo
global.ciclo = true;
global.i = 0;
[/gml]
y en el evento Step del controlador se modifica y se comprueba la variable global.i
[gml]
if( global.i < limite ) global.i++;
else global.ciclo = false;
[/gml]
las otras instancias pueden saltar los códigos de interacción con el jugador así
[gml]
if( global.ciclo ) exit;
[/gml]

La verdad que no he entendido muy bien lo que me has dicho!

Que debo hacer con el codigo de mis scripts? Pasarlo a los eventos step? Yo todas las acciones las desencadeno desde el global left button event, alli compruebo la iteraccion del usuario en dos clicks y si se cumplen una serie de condiciones hace la llamada a los scripts!

La cosa que ya tengo terminada a grandes rasgos la funcionalidad del juego y ahora nose como hacer que esto quede bonito  asi como con tiempos de espera para que se vean los movimientos o como poder meterle animaciones!

Espero que me puedas explicar un poco mas!

Muchas gracias