Stap 8:
OK, is hier de tijd dat ik ga om te fess up. I 'm gonna overslaan van de beschrijving van het eerste deel van het programma. De kort en zoet versie is dat het leest het tekenomzettingsbestand voor bestandsnamen (met de zin en de exoterische opdracht) en het Toon-bestand (met de script-definities en wat we eigenlijk willen doen), en alle deze tekst converteren in vier geheel getal arrays. Penningen, ik noem het. Het is een pre compiler of tokenizer, die de input parseert en bereidt het voor een compiler, of in ons geval, een tolk. ' nuff said.
De 50.000 voet-beschrijving van de werking van het programma wordt gepresenteerd in de afbeelding hieronder. Wij zullen duik in een beetje dieper nadat we herzien.
Netwerk controle, controle- en andere sensoren praten is waar externe milieu ingangen worden verwerkt. De belangrijkste controle-lus is waar de gescripte acties plaatsvinden. (En wees voorzichtig met belt ze scripted acties, zoals sommige opdrachten willekeurige acties veroorzaken optreden.) Na verwerking, er is een aanwijzer naar de matrix waar de belangrijkste script begint (elke show moet een belangrijkste script). Uitvoering begint er. Welke actie wordt gevraagd, het programma springt naar de bijbehorende sectie van code en wordt uitgevoerd. (Voor de geavanceerde, dit wordt gedaan met de Select... Case structuur.) Elk parallelle exemplaar van een script heet een speler (als rode draad, verwerken, etc...)
Een van de eerste stappen is het geheugen voor de speler aanwijzer, en de verwachte eindtijd worden gereserveerd. Dan de code wordt uitgevoerd en geeft de besturing moet aan de volgende speler moet worden uitgevoerd. Merk op dat de eerste speler niet voltooid worden kan. Eerst, elke speler krijgt tijd genoeg dus voor het uitvoeren van slechts één regel. Ten tweede, kan de tijd die is opgegeven op elke regel niet zijn verstreken. Dus de volgende keer dat dit script controle krijgen is, wordt gecontroleerd om te zien als de tijd is verstreken. Als dat niet het geval is, er is meer tijd voor een ander script uit te voeren. Als het geval is, wordt de volgende regel in het script uitgevoerd. Als het script is voltooid (tijd < = 0 of script pointer op nul gezet), blijft het controleprogramma op.
Bijvoorbeeld:
Als ((TimeDone(Player)) en (Execution(Player)=Running) dan
TimeDone (speler) = gedaanScriptStep=Step(Player) Select Case ScriptAction(ScriptStep) Case PlayMove MoveIndex=ScriptDescription(ScriptStep)
Put #1,,MoveCommand(MoveIndex)
TimeDone (speler) = Timer + ScriptOption (ScriptStep) / 1000
Step(Player)=ScriptStack(ScriptStep)