Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Zeran_Maran en Noviembre 27, 2018, 08:58:20 PM

Título: error de sentencia While en Evento Step
Publicado por: Zeran_Maran en Noviembre 27, 2018, 08:58:20 PM
hola,

la pregunta es tal vez sencilla, ¿porque no puedo utilizar la sentencia "while" en un evento tipo "step"?

simplemente se queda trabado, imagino que se debe a la naturaleza del evento Step, pero quiero corroborarlo con los expertos.

gracias de antemano.

saludos.
Título: Re:error de sentencia While en Evento Step
Publicado por: Seirlord_Games en Noviembre 27, 2018, 09:03:08 PM
Un evento while puede usarse en el evento step, si se traba es porque no consigue salir del bucle, puedes poner el codigo?

Un saludo!
Título: Re:error de sentencia While en Evento Step
Publicado por: BssString en Noviembre 27, 2018, 09:25:45 PM
Hola Zeran_Maran

Se te pega porque la condición que le diste al while nunca se deja de cumplir, de ser así se te va a pegar en cualquier evento, room_start, create, etc. No tiene nada que ver el STEP
Título: Re:error de sentencia While en Evento Step
Publicado por: bygdle en Noviembre 27, 2018, 09:29:17 PM
Recuerda colocar en tu post el ícono de la versión de GM que estés utilizando.
Título: Re:error de sentencia While en Evento Step
Publicado por: Zeran_Maran en Noviembre 28, 2018, 03:34:43 AM
hola,

gracias por las respuestas,  les colocaré aqui le codigo que estoy utilizando.

while(distance_to_object(objeto_player) > 50)
     {
          sprite_index=sprite_avanzando;
          otras acciones...
     }
sprite_detenido;

básicamente quiero cambiar el sprite en función de la distancia con un objeto y ejecutar incrementos y decrementos en algunas variables (ojo, ya verifique que el problema no este en las variables adicionales y todo esta correcto).

otro ejemplo que también se me cuelga.

en otra función voy contando las veces que es golpeado, al llegar a dos veces quiero que se aleje una buena distancia del player

while (golpeado==2)
                    {
                       sprite_index=sprite_caminando;
                            if(x>obj_player.x)
                                {
                                    move_towards_point(x+300, y, 10);
                                }
                            else
                                {
                                    move_towards_point(x-300, y, 10);
                                }
                    }

gracias nuevamente.

Título: Re:error de sentencia While en Evento Step
Publicado por: knd144 en Noviembre 28, 2018, 06:02:09 AM
Sí, el problema es que la sentencia nunca deja de cumplirse y se queda "atrapado" en el mismo step.

Hasta donde sé, en cada "step" el Game Maker ejecuta uno por uno los objetos que tienen este evento; por lo que al llegar al objeto que tiene ese código y la condición se cumple, entonces se ejecuta ese código indefinidamente; lo que ocasiona que no se pase a la ejecución de los demás objetos y por ende ese "step" nunca se termine.  :-[

El evento "step" puede entenderse como un bucle que se ejecuta a través del tiempo; por lo que en este caso lo que debes hacer es cambiar el "while" por un simple "if" ya que quieres que ese código se ejecuta cada step siempre y cuando se cumpla la condición.