Étape 8 :
OK, voici le temps que je m’apprête à coupé. Je vais sauter la description de la première partie du programme. La version courte et douce, c’est qu’il lit le fichier de traduction (contenant l’expression et la commande exotérique) et le fichier show (contenant les définitions de script et ce que nous voulons réellement faire) et de convertir tout ce texte en quatre tableaux d’entiers. Jetons, je l’appelle. C’est un pré-compileur ou l’analyseur de code php, qui analyse l’entrée et il se prépare pour un compilateur ou dans notre cas, un interprète. ' nuff said.
La description de 50 000 pieds du fonctionnement du programme est présentée dans l’image ci-dessous. Nous allons plonger dans un peu plus loin après que nous l’analysons.
Contrôle de réseau, contrôle et autres capteurs de parler est où les apports environnementaux externes sont traitées. La boucle de commande principal est où les actions scriptées se produisent. (Et faire attention en qualifiant scénarisé des actions, elle certaines commandes entraîner des mesures aléatoires se produisent). Après le traitement, il y a un pointeur vers le tableau où commence le script principal (chaque spectacle doit avoir un script principal). L’exécution commence là. Toute action est demandée, le programme passe à la section appropriée du code et s’exécute. (Pour les avancés, cela se fait avec le Select... Structure de l’affaire). Chaque instance parallèle d’un script est appelé un joueur (comme thread, processus, etc....)
Une des premières étapes est de réserver de la mémoire pour le pointeur du joueur et son heure de fin prévue. Ensuite, le code s’exécute et retourne le contrôle au joueur suivant doit être exécuté. Notez que le premier joueur ne peut pas être complète. Tout d’abord, chaque joueur reçoit le temps suffisant pour exécuter une seule ligne. En second lieu, l’heure spécifiée sur chaque ligne ne peut pas écoulées. Alors la prochaine fois que ce script est donné de contrôle, il est vérifié pour voir si son temps est expiré. Si ce n’est pas le cas, il n’y a plus de temps pour un autre script à exécuter. Si elle a, la ligne suivante dans le script s’exécute. Si le script est terminé (temps < = 0 ou script pointeur la valeur zéro), le programme de contrôle continue sur.
Par exemple :
Si ((TimeDone(Player)) et (Execution(Player)=Running) puis
TimeDone (joueur) = faitScriptStep=Step(Player) Select Case ScriptAction(ScriptStep) Case PlayMove MoveIndex=ScriptDescription(ScriptStep)
Mis #1,,MoveCommand(MoveIndex)
TimeDone (joueur) = Timer + ScriptOption (ScriptStep) / 1000
Step(Player)=ScriptStack(ScriptStep)