|
@@ -1,7 +1,7 @@
|
|
<html>
|
|
<html>
|
|
<head>
|
|
<head>
|
|
<title>
|
|
<title>
|
|
- Lier une Dll à LuaEdit (Tutoriel) - Gérer le Jeu
|
|
|
|
|
|
+ Lier une Dll à LuaEdit (Tutoriel) - Gérer le Jeu
|
|
</title>
|
|
</title>
|
|
<link rel="stylesheet" href="..\Tutorial.css" type="text/css">
|
|
<link rel="stylesheet" href="..\Tutorial.css" type="text/css">
|
|
</head>
|
|
</head>
|
|
@@ -11,7 +11,7 @@
|
|
<tr>
|
|
<tr>
|
|
<td valign="bottom">
|
|
<td valign="bottom">
|
|
<div align="left">
|
|
<div align="left">
|
|
- <b><font face="Tahoma" size="3" color="navy">Gérer le Jeu</font></b>
|
|
|
|
|
|
+ <b><font face="Tahoma" size="3" color="navy">Gérer le Jeu</font></b>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</td>
|
|
<td>
|
|
<td>
|
|
@@ -30,8 +30,8 @@
|
|
<font face="Tahoma" size="2">
|
|
<font face="Tahoma" size="2">
|
|
<p style="text-align:justify">
|
|
<p style="text-align:justify">
|
|
Maintenant, la script contient de solides bases/structures autour desquelles nous allons
|
|
Maintenant, la script contient de solides bases/structures autour desquelles nous allons
|
|
- ajouter du code pour gérer le jeu. Cela signifie algorythmes de génération aléatoire de séquence,
|
|
|
|
- validations de touche, système de pointage, etc. Commencons par la routine d'intialisation du jeu.
|
|
|
|
|
|
+ ajouter du code pour gérer le jeu. Cela signifie algorythmes de génération aléatoire de séquence,
|
|
|
|
+ validations de touche, système de pointage, etc. Commencons par la routine d'intialisation du jeu.
|
|
</p>
|
|
</p>
|
|
<br>
|
|
<br>
|
|
</font>
|
|
</font>
|
|
@@ -41,19 +41,19 @@
|
|
<td colspan="2">
|
|
<td colspan="2">
|
|
<font face="Tahoma" size="2">
|
|
<font face="Tahoma" size="2">
|
|
<p style="text-align:justify">
|
|
<p style="text-align:justify">
|
|
- La fonction simon:Initialize() précédemment ajoutée sera appelé juste avant chaque nouvelle partie
|
|
|
|
- requise par le joueur. Notre but principal dans cette fonction est de réinitialiser tout les variables de manipulation
|
|
|
|
- précédemment créées et initialiser la logique de hasard. Dans le monde des ordinateurs, générer
|
|
|
|
- le hasard est loin d'être une mince chose à accomplir. Soyons réalistes, il est impossible de recréer
|
|
|
|
- exactement ce que le hasard est par définition. D'un autre côté, nous pouvons générer quelque chose
|
|
|
|
- de si grand en termes de quantité de possibilités, que statistiquement et humainement parlant, nous pouvons
|
|
|
|
- appeler cela du hasard. Le moteur de pseudo-hasard de Lua fonctionne de la même manière que celui du C/C++.
|
|
|
|
- En fait, "derrière la scène", Lua utilise le moteur de pseudo-harsard du C/C++. Ce moteur fonctionne
|
|
|
|
- avec des "seeds" (semances) pour générer des séquences de numéros au "hasard". Une "seed" (semance) est un nombre qui sera
|
|
|
|
- utilisé pour générer les numéros au "hasard". En d'autre mots, deux séquences utilisant la même "seed" (semance)
|
|
|
|
- sera identique. Pour éviter ce problème, plusieurs scripts/programmes utilisent l'heure courrante du système
|
|
|
|
- comme "seed" (semance), ce qui rend pratiquement impossible pour l'utilisateur d'obetenir ou même de se rappeler
|
|
|
|
- d'avoir obetenue la même séquence. Voici comment la fonction simon:Initialize() devrait ressembler à:
|
|
|
|
|
|
+ La fonction simon:Initialize() précédemment ajoutée sera appelé juste avant chaque nouvelle partie
|
|
|
|
+ requise par le joueur. Notre but principal dans cette fonction est de réinitialiser tout les variables de manipulation
|
|
|
|
+ précédemment créées et initialiser la logique de hasard. Dans le monde des ordinateurs, générer
|
|
|
|
+ le hasard est loin d'être une mince chose à accomplir. Soyons réalistes, il est impossible de recréer
|
|
|
|
+ exactement ce que le hasard est par définition. D'un autre côté, nous pouvons générer quelque chose
|
|
|
|
+ de si grand en termes de quantité de possibilités, que statistiquement et humainement parlant, nous pouvons
|
|
|
|
+ appeler cela du hasard. Le moteur de pseudo-hasard de Lua fonctionne de la même manière que celui du C/C++.
|
|
|
|
+ En fait, "derrière la scène", Lua utilise le moteur de pseudo-harsard du C/C++. Ce moteur fonctionne
|
|
|
|
+ avec des "seeds" (semances) pour générer des séquences de numéros au "hasard". Une "seed" (semance) est un nombre qui sera
|
|
|
|
+ utilisé pour générer les numéros au "hasard". En d'autre mots, deux séquences utilisant la même "seed" (semance)
|
|
|
|
+ sera identique. Pour éviter ce problème, plusieurs scripts/programmes utilisent l'heure courrante du système
|
|
|
|
+ comme "seed" (semance), ce qui rend pratiquement impossible pour l'utilisateur d'obetenir ou même de se rappeler
|
|
|
|
+ d'avoir obetenue la même séquence. Voici comment la fonction simon:Initialize() devrait ressembler à:
|
|
</p>
|
|
</p>
|
|
<br>
|
|
<br>
|
|
</td>
|
|
</td>
|
|
@@ -86,15 +86,15 @@
|
|
<br>
|
|
<br>
|
|
<br>
|
|
<br>
|
|
<p style="text-align:justify">
|
|
<p style="text-align:justify">
|
|
- Dans le précédent exemple de code, la fonction math.random() est appelée par trois fois parce que sur certains
|
|
|
|
- système d'exploitation (du moins dans Windows 2k<sup>®</sup>) les premiers numéros d'une séquence de hasard que vous obtenez ne sont pas réellement
|
|
|
|
- "hasardés". (Source prise du site web <a href="http://lua-users.org/wiki/MathLibraryTutorial">lua-users wiki</a>) Pour obtenir de meilleur pseudo-hasardeux numéros, nous avons juste à générer quelques numéros au hasard
|
|
|
|
- avant de réellement les utiliser. Les autre lignes de code dans le précédent exemple initialise les variables précédemment
|
|
|
|
- déclarées à <a href=".\Page2_En.html">l'étape 2</a> de ce tutoriel. Maintenant, ajoutons du code à la
|
|
|
|
- fonction simon:AddSequence(Sequence). Le but de cette fonction est d'ajouter un nouvel item à séquence
|
|
|
|
- principale que le joueur essaira de reproduire plus tard. Pour se faire, nous incrémenterons par 1
|
|
|
|
- la variable globale SequenceCount et nous "hasarderons" un numéro de 1 à 4. Le numéro généré
|
|
|
|
- représentera une des lumière à allumer dans la séquence. Voici à quoi la fonction devrait ressembler à:
|
|
|
|
|
|
+ Dans le précédent exemple de code, la fonction math.random() est appelée par trois fois parce que sur certains
|
|
|
|
+ système d'exploitation (du moins dans Windows 2k<sup>®</sup>) les premiers numéros d'une séquence de hasard que vous obtenez ne sont pas réellement
|
|
|
|
+ "hasardés". (Source prise du site web <a href="http://lua-users.org/wiki/MathLibraryTutorial">lua-users wiki</a>) Pour obtenir de meilleur pseudo-hasardeux numéros, nous avons juste à générer quelques numéros au hasard
|
|
|
|
+ avant de réellement les utiliser. Les autre lignes de code dans le précédent exemple initialise les variables précédemment
|
|
|
|
+ déclarées à <a href=".\Page2_En.html">l'étape 2</a> de ce tutoriel. Maintenant, ajoutons du code à la
|
|
|
|
+ fonction simon:AddSequence(Sequence). Le but de cette fonction est d'ajouter un nouvel item à séquence
|
|
|
|
+ principale que le joueur essaira de reproduire plus tard. Pour se faire, nous incrémenterons par 1
|
|
|
|
+ la variable globale SequenceCount et nous "hasarderons" un numéro de 1 à 4. Le numéro généré
|
|
|
|
+ représentera une des lumière à allumer dans la séquence. Voici à quoi la fonction devrait ressembler à:
|
|
</p>
|
|
</p>
|
|
<br>
|
|
<br>
|
|
</td>
|
|
</td>
|
|
@@ -118,10 +118,10 @@
|
|
<br>
|
|
<br>
|
|
<p style="text-align:justify">
|
|
<p style="text-align:justify">
|
|
Maintenant, remplissons la fonction simon:PlaySequence(Sequence). Le principal obectif de cette
|
|
Maintenant, remplissons la fonction simon:PlaySequence(Sequence). Le principal obectif de cette
|
|
- fonction est de jouer une séquence précédemment bâtit par l'intermédiaire de fonctions exportées du
|
|
|
|
- moteur du jeu Simon<sup>®</sup>. Dans cette fonction, on devrait analyser la table de la séquence principale
|
|
|
|
- item par item et allumet la lumière qui correspond avec la valeur de l'item courrant.
|
|
|
|
- Soyons un peu plus spécifique:
|
|
|
|
|
|
+ fonction est de jouer une séquence précédemment bâtit par l'intermédiaire de fonctions exportées du
|
|
|
|
+ moteur du jeu Simon<sup>®</sup>. Dans cette fonction, on devrait analyser la table de la séquence principale
|
|
|
|
+ item par item et allumet la lumière qui correspond avec la valeur de l'item courrant.
|
|
|
|
+ Soyons un peu plus spécifique:
|
|
</p>
|
|
</p>
|
|
<br>
|
|
<br>
|
|
</td>
|
|
</td>
|
|
@@ -162,33 +162,33 @@
|
|
<br>
|
|
<br>
|
|
<br>
|
|
<br>
|
|
<p style="text-align:justify">
|
|
<p style="text-align:justify">
|
|
- Les deux variables locales v et i serons utilisées pour récupérer le résultat
|
|
|
|
- du retour aux appels à la fonction next(). La fonction next() sert à obtenir l'item
|
|
|
|
- suivant l'élément donné dans une table Lua en passant celle-ci et l'index de
|
|
|
|
- l'élément courrant comme arguments. Les fonctions simon.LockControls() et simon.UnlockControls()
|
|
|
|
- sont exportées du moteur du jeu leur but principal est de verrouiller/déverrouiller
|
|
|
|
- les contrôles au joueur afin d'éviter toute conflit dans le code. Dans le précédent exemple
|
|
|
|
- de code, ces appels effectués avant et après la boucle qui s'occupe d'afficher la séquence
|
|
|
|
- au joueur à l'écran. Aussi, la l'exemple de code, l'instruction repeat...until
|
|
|
|
- a été utilisé afin de permettre au code d'entrer dans la bouvle à la première itération
|
|
|
|
- chaque fois qu'il le doit mais n'importe quel autre syntaxe de boucle aurait très bien pu faire l'affaire.
|
|
|
|
- Le premier morceau de code dans la boucle principale est un appel à la fonction simon.SetLight() utilisant
|
|
|
|
- SIMON_NONE comme premier et seul argument. Cette instruction fermera tout les lumières
|
|
|
|
- dans le jeu parce que nous voulons nous assurer que pour chaque item il n'y aille pas d'autre lumière allumée
|
|
|
|
- que celle représenter par l'item courrant. Ensuite, nous avons un appel à la fonction Sleep() avec 300 miliseconds
|
|
|
|
- comme argument. Cet appel, contrairement à celui à <a href=".\Page2_En.html">l'étape 2</a> du
|
|
|
|
- tutoriel, a le même effet sur le processeur de l'ordinateur mais est davantage utilisé dans ce cas-ci comme un dispositif de "pause"
|
|
|
|
- plutôt qu'un dispositif de "rallentissement". Avec ce qui a été clarifié jusqu'à maintenant,
|
|
|
|
- vous devriez être capable de comprendre les lignes de code qui n'ont toujours pas été expliquées.
|
|
|
|
|
|
+ Les deux variables locales v et i serons utilisées pour récupérer le résultat
|
|
|
|
+ du retour aux appels à la fonction next(). La fonction next() sert à obtenir l'item
|
|
|
|
+ suivant l'élément donné dans une table Lua en passant celle-ci et l'index de
|
|
|
|
+ l'élément courrant comme arguments. Les fonctions simon.LockControls() et simon.UnlockControls()
|
|
|
|
+ sont exportées du moteur du jeu leur but principal est de verrouiller/déverrouiller
|
|
|
|
+ les contrôles au joueur afin d'éviter toute conflit dans le code. Dans le précédent exemple
|
|
|
|
+ de code, ces appels effectués avant et après la boucle qui s'occupe d'afficher la séquence
|
|
|
|
+ au joueur à l'écran. Aussi, la l'exemple de code, l'instruction repeat...until
|
|
|
|
+ a été utilisé afin de permettre au code d'entrer dans la bouvle à la première itération
|
|
|
|
+ chaque fois qu'il le doit mais n'importe quel autre syntaxe de boucle aurait très bien pu faire l'affaire.
|
|
|
|
+ Le premier morceau de code dans la boucle principale est un appel à la fonction simon.SetLight() utilisant
|
|
|
|
+ SIMON_NONE comme premier et seul argument. Cette instruction fermera tout les lumières
|
|
|
|
+ dans le jeu parce que nous voulons nous assurer que pour chaque item il n'y aille pas d'autre lumière allumée
|
|
|
|
+ que celle représenter par l'item courrant. Ensuite, nous avons un appel à la fonction Sleep() avec 300 miliseconds
|
|
|
|
+ comme argument. Cet appel, contrairement à celui à <a href=".\Page2_En.html">l'étape 2</a> du
|
|
|
|
+ tutoriel, a le même effet sur le processeur de l'ordinateur mais est davantage utilisé dans ce cas-ci comme un dispositif de "pause"
|
|
|
|
+ plutôt qu'un dispositif de "rallentissement". Avec ce qui a été clarifié jusqu'à maintenant,
|
|
|
|
+ vous devriez être capable de comprendre les lignes de code qui n'ont toujours pas été expliquées.
|
|
</p>
|
|
</p>
|
|
<p style="text-align:justify">
|
|
<p style="text-align:justify">
|
|
- Afin de finaliser cette étape, nous allons ajouter un peu de code à la fonction simon:OnButtonClick(ButtonIndex).
|
|
|
|
- Cette fonction sera apellée depuis le moteur du jeu Simon<sup>®</sup> à chaque fois que
|
|
|
|
|
|
+ Afin de finaliser cette étape, nous allons ajouter un peu de code à la fonction simon:OnButtonClick(ButtonIndex).
|
|
|
|
+ Cette fonction sera apellée depuis le moteur du jeu Simon<sup>®</sup> à chaque fois que
|
|
le joueur appuira sur un des quatre bouttons du jeu. Notre but principal dans cette fonction
|
|
le joueur appuira sur un des quatre bouttons du jeu. Notre but principal dans cette fonction
|
|
- est de valider les boutton que le joueur à appuyé et commencer à gérer le système de pointage pour une éventuelle victoire.
|
|
|
|
- Pour se faire, les fonctions simon.GetScore() et simon.SetScore() seront utilisées. Étant donné la
|
|
|
|
- simplicité de cette fonction et l'avancement du tutoriel, cette fonction ne sera pas
|
|
|
|
- expliqué en détail. Vous avez juste à vous rappeler de ce que nous avons discuté jusqu'à maintenant dans ce turoriel:
|
|
|
|
|
|
+ est de valider les boutton que le joueur à appuyé et commencer à gérer le système de pointage pour une éventuelle victoire.
|
|
|
|
+ Pour se faire, les fonctions simon.GetScore() et simon.SetScore() seront utilisées. Étant donné la
|
|
|
|
+ simplicité de cette fonction et l'avancement du tutoriel, cette fonction ne sera pas
|
|
|
|
+ expliqué en détail. Vous avez juste à vous rappeler de ce que nous avons discuté jusqu'à maintenant dans ce turoriel:
|
|
</p>
|
|
</p>
|
|
<br>
|
|
<br>
|
|
</td>
|
|
</td>
|
|
@@ -218,7 +218,7 @@
|
|
<br>
|
|
<br>
|
|
<br>
|
|
<br>
|
|
<p style="text-align:justify">
|
|
<p style="text-align:justify">
|
|
- Dans la prochaine étape de ce tutoriel, nous discuterons davantage à propos du "contrôle" du jeu
|
|
|
|
|
|
+ Dans la prochaine étape de ce tutoriel, nous discuterons davantage à propos du "contrôle" du jeu
|
|
dans la boucle principale et lier les fonctions de la dll C/C++/Delphi.
|
|
dans la boucle principale et lier les fonctions de la dll C/C++/Delphi.
|
|
</p>
|
|
</p>
|
|
<br>
|
|
<br>
|
|
@@ -228,7 +228,7 @@
|
|
<td valign="bottom">
|
|
<td valign="bottom">
|
|
<font face="Tahoma" size="2">
|
|
<font face="Tahoma" size="2">
|
|
<div align="left" valign="bottom">
|
|
<div align="left" valign="bottom">
|
|
- <a href=".\Page2_Fr.html"><< Précédent</a>
|
|
|
|
|
|
+ <a href=".\Page2_Fr.html"><< Précédent</a>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</td>
|
|
<td>
|
|
<td>
|
|
@@ -246,9 +246,9 @@
|
|
<div align="right">
|
|
<div align="right">
|
|
<a href="http://www.luaedit.org">www.luaedit.org</a>
|
|
<a href="http://www.luaedit.org">www.luaedit.org</a>
|
|
<br>
|
|
<br>
|
|
- © Copyright 2004-2005 LuaEdit
|
|
|
|
|
|
+ © Copyright 2004-2005 LuaEdit
|
|
<br>
|
|
<br>
|
|
- Lier une Dll à LuaEdit (Tutoriel)
|
|
|
|
|
|
+ Lier une Dll à LuaEdit (Tutoriel)
|
|
</div>
|
|
</div>
|
|
</font>
|
|
</font>
|
|
</td>
|
|
</td>
|