Ver Mensaje Individual
  #8  
Antiguo 06-10-2013
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.025
Reputación: 27
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
No tengo ni idea de GO, así que no sé muy bien cómo va; y la verdad es que me pierdo con eso del YIELD y las corrutinas...

Los mensajes no son GOTOs, ya que modifican el flujo del programa. Es más, es que en mi lenguaje no se definen flujos de ejecución, en el sentido estricto. Tanto las respuestas a mensajes como las descripciones de los estados se ejecutan en un tick o, quizá mejor dicho, en una iteración del bucle principal de juego. Es decir:
Código Delphi [-]
  PROCEDURE BucleJuego;
  BEGIN
    REPEAT
      ObtieneEntradasJugador; { Teclado, ratón, mando de juego... }
      ActualizaEstadosActores;
      DespachaMensajesPendientes;
      DibujaNuevoFotograma;
    UNTIL FinJuego;
  END;
ActualizaEstadosActores y DespachaMensajesPendientes son los puntos de entrada al intérprete del lenguaje. En el primero se ejecuta la rutina del estado actual del actor y en el segundo se despachan los mensajes de la cola de pendientes.

Hay que tener en cuenta, también, que puede establecerse un retardo al envío de un mensaje. Es decir, que pueden funcionar como una especie de "alarma". Por ejemplo, cuando el minero Bob llega a casa avisa a su esposa Helen; la respuesta podría ser:
Código:
ACTOR Helen IS Wife
 ...

  MESSAGE EnCasa
    IF SENDER = Esposo
      Msg "Hi hun.  I'll prepare your dinna'."
      SEND MESSAGE CenaLista TO SELF DELAY 100
    END IF
  END MESSAGE

  MESSAGE CenaLista
    IF SENDER = SELF
      Msg "Hun, her' are your dinna'."
      SEND MESSAGE CenaLista TO Esposo
    END IF
  END
 ...
END ACTOR
Como ves, las respuestas a estos mensajes no modifican el estado de la esposa, por lo que no modifican el "flujo" del programa.

No sé si esto aclara algo. Espero que sí.

Última edición por Ñuño Martínez fecha: 06-10-2013 a las 12:12:04.
Responder Con Cita