Créer les Bases du Code



Avant de commencer à programmer la logique du jeu Simon®, il y a quelques bases que l'ont doit créer, tout comme dans n'importe quel autre projet. Commencons par ajouter les variables suivante au début du script:



-- Set "constants" for Simon game
local SIMON_NONE = 0
local SIMON_RED = 1
local SIMON_BLUE = 2
local SIMON_YELLOW = 3
local SIMON_GREEN = 4


Ces variables seront utilisées "comme si" elle étaient des constantes étant donné le fait que le concepte de constantes n'existe pas vraiment en Lua. Cela signifie que notre code ne modifira pas leurs contenue. Ensuite, allons ajouter de "réel" variables (leurs contenue ne sera pas modifier tout au long de la script) pour controler l'environnment du jeu:



-- Game handling variables
local GameState = true
local MainSequence = {}
local SequenceCount = 0
local UserSequenceCount = 0


La variable GameState est un booléen qui contiendra false si le jeu est terminé. MainSequence est une table qui contiendra la séquence complète depuis le début d'une nouvelle partie. la variable SequenceCount is un entier qui contiendra le compte actuel de la longeur totale de la séquence. Finallement, UserSequenceCount est un entier qui contiendra la longeur de la séquence entrée par le joueur jusqu'à maintenant. Maintenant, nous allons ajouter 4 fonctions dans lesquelles nous ajouterons du code plus tard. Ces fonctions seront localisées dans la table simon qui sera créée par le moteur du jeu (simon.dll) quand la script sera intialisée à travers la fonction "Initializer":



function simon:OnButtonClick(ButtonIndex)
end

function simon:AddSequence(Sequence)
end

function simon:PlaySequence(Sequence)
end

function simon:Initialize()
end


La fonction OnClick(ButtonIndex) sera appelée à chaque fois que le joueur cliquera sur un bouton dans le jeu. Cette fonction servira à valider le bouton dans la séquence courrante. Les fonctions simon:AddSequence(Sequence), simon:PlaySequence(Sequence) et simon:Initialize() sont des fonctions appelées à travers la script lors de différentes étapes durant le jeu. Une dernière chose est requise avant la fin de cette étape: créer la charpente. Pour se faire, une boucle principale sera ajoutée en fin de fichier comme suit:



simon.Create()

-- Main processing loop
while simon.GetPowerStatus() == 1 do
    -- Make sure the processor doesn't runs for no reason
    Sleep(10)
end

simon.Destroy()


Cette boucle manipulera le jeu du début jusqu'à la fin. Un itération dans cette boucle sera exécuté plusieurs fois par seconde tandisqu'un tel travail de la par du processeur n'est aucunement nécessaire au jeu afin de fonctionner. C'est pourquoi le moteur du jeu (simon.dll) exporte une fonction appelée Sleep() qui signale au processeur de "dormir" pendant un certain laps de temps en milisecondes. En d'autre mots, en employant cette fonction nous nous assurerons que le jeu n'utilisera pas 100% des ressources du processeur alors que dans ce cas précis nous n'en avons guerre de besoin. Aussi, comme vous avez probablement déjà remarqué, cette partie de code inclue deux appels à des fonctions du moteur du jeu: simon.Create() et simon.Destroy(). la fonction simon.Create() crée l'interface du jeu Simon® afin d'interagir avec le joueur alors que la fonction simon.Destroy() détruit celle-ci. Dans la prochaine étape, ajouterons du code à l'intérieur des fonctions que nous venons d'instancier.


Conseils:
  • L'expression réservé "local" utilisée lors de la déclaration de variables ci-haut n'est pas nécessaire au code afin de fonctionner dans la mesure où la script n'est pas chargé dans d'autre scripts. Cepandant, étant donné que ces variables ne seront utilisées que dans le scope global de ce scripts, il serait recommendé, afin de prévenir tout potentiel problème que ce soit, de garder l'instruction "local" instruction même si elle n'est pas nécessaire dans ce cas précis. Voir section 2.6 de la documentation Lua 5.0 pour plus de détails. (Disponible dans le menu Help de LuaEdit)
  • La fonction Create() accepte un argument optionel. Celui-ci gère le "comment" l'interface sera crée. Quand cet argument vaut 1, l'interface est crée dans une fenêtre ajustable. Lorsque ce même argument vaut 2, l'interface est créé dans une fenêtre d'outils ajustable. Lorsque l'argument vaut ni 1, ni 2, l'interface est créé dans une fenêtre sans bordure. Dans l'example, l'argument optionel valait nil puisque nous n'avions jamais donné quelque valeur que ce soit lors de l'appel de cette fonction.


www.luaedit.org
© Copyright 2004-2005 LuaEdit
Lier une Dll à LuaEdit (Tutoriel)