Paso 8:
OK, aquí es el tiempo que voy a confesar para arriba. Voy a omitir la descripción de la primera parte del programa. La versión corta y dulce es la que lee el archivo de traducción (que contiene la frase y el comando exotérico) y el archivo de programa (que contiene las definiciones de la escritura y lo que realmente queremos hacer) y convertir ese texto en cuatro arrays de enteros. Tokens, lo llamo. Es un precompilador o separador, que analiza la entrada y lo prepara para un compilador o en nuestro caso, un intérprete. ' lo suficientemente dicho.
La descripción de 50.000 pies de cómo funciona el programa se presenta en la siguiente imagen. A bucear en un poco más después de que se revisa.
Control de la red, hablando de otros sensores y control es donde se procesan elementos ambientales externos. El lazo de control principal es donde ocurren las acciones con secuencias de comandos. (Y tener cuidado al llamarlos guión acciones, ya que algunos de los comandos al azar acciones para que ocurrieran). Después de un tratamiento, hay un puntero a la matriz donde comienza la secuencia de comandos principales (cada show debe tener un script principal). Ejecución comienza. Cualquier acción que se solicita, el programa Salta a la sección correspondiente del código y ejecuta. (Para los avanzados, esto se hace con el Select... Estructura del caso.) Cada instancia paralela de una secuencia de comandos se llama un jugador (como hilo, proceso, etc...)
Uno de los primeros pasos es reservar memoria para el puntero del jugador y su tiempo final esperado. A continuación, el código se ejecuta y devuelve el control al siguiente jugador para ser ejecutado. Tenga en cuenta que el primer jugador puede no ser completado. En primer lugar, cada jugador se le da tiempo suficiente para ejecutar una sola línea. En segundo lugar, el tiempo especificado en cada línea no han pasado. Así que la próxima vez que este script se da control, se comprueba para ver si su tiempo ha expirado. Si no, hay tiempo para otro script a ejecutar. Si tiene, ejecuta la siguiente línea en el script. Si el script ha terminado (tiempo < = 0 o script puntero a cero), continúa el programa de control.
Por ejemplo:
Si ((TimeDone(Player)) y (Execution(Player)=Running) luego
TimeDone (jugador) = hechoScriptStep=Step(Player) seleccionar caso ScriptAction(ScriptStep) caso PlayMove MoveIndex=ScriptDescription(ScriptStep)
Poner #1,,MoveCommand(MoveIndex)
TimeDone (jugador) = reloj + ScriptOption (ScriptStep) / 1000
Step(Player)=ScriptStack(ScriptStep)