Differences

This shows you the differences between the selected revision and the current
version of the page.


fr:wmebook:ch2 2011/10/18 13:37 fr:wmebook:ch2 2011/10/19 13:12 current
Line 118: Line 118:
-====== 2.1 Les tableaux magiques ======+ 
 +====== 2.1. Les tableaux magiques ======
Avant de commencer à parler de tableaux, je vais vous donner un exemple d'un réel problème dans les jeu. Imaginez que vous ayez une porte protégée par digicode. vous devez tapez les 4 chiffres correctement pour que la porte s'ouvre. Vous avez différentes façons de faire cela. Commençons par la pire: Avant de commencer à parler de tableaux, je vais vous donner un exemple d'un réel problème dans les jeu. Imaginez que vous ayez une porte protégée par digicode. vous devez tapez les 4 chiffres correctement pour que la porte s'ouvre. Vous avez différentes façons de faire cela. Commençons par la pire:
Line 224: Line 225:
-====== 2.2 les Conditions ======+ 
 + 
 +====== 2.2. Les Conditions ======
Habituellement nous savons ou nous allons. Nous avons parlé précédemment de l’exemple d'une porte et d'un bouton, nous avons perler de tester si le bouton etait appuyé. Mais comment faire ce test? Nous avons une commande de condition appelé **if** (si) qui le fait pour nous. Encore une fois commençons par du code: Habituellement nous savons ou nous allons. Nous avons parlé précédemment de l’exemple d'une porte et d'un bouton, nous avons perler de tester si le bouton etait appuyé. Mais comment faire ce test? Nous avons une commande de condition appelé **if** (si) qui le fait pour nous. Encore une fois commençons par du code:
Line 505: Line 508:
**Important:** **Important:**
Ne jamais initialiser vos variables dans les fichiers include. Elles seraient réinitialisée a chaque inclusion de votre script. Ne jamais initialiser vos variables dans les fichiers include. Elles seraient réinitialisée a chaque inclusion de votre script.
 +
 +
 +
Line 530: Line 536:
Bon, la magie des Objets n'est pas seulement dans les //attributs//, mais aussi dans les **méthodes**. Une méthode c'est une fonction normale, qui appartient à l'objet. Toutes les fois que vous avez utilisé Game.Msg et seulement maintenant vous découvrez, que c'est une méthode de l'objet Game. Le pire est, que presque tout ce dont vous aurez accès du côté de WME est orienté objet et c'est sûr vous allez rencontrer votre dose d'objets. Bon, la magie des Objets n'est pas seulement dans les //attributs//, mais aussi dans les **méthodes**. Une méthode c'est une fonction normale, qui appartient à l'objet. Toutes les fois que vous avez utilisé Game.Msg et seulement maintenant vous découvrez, que c'est une méthode de l'objet Game. Le pire est, que presque tout ce dont vous aurez accès du côté de WME est orienté objet et c'est sûr vous allez rencontrer votre dose d'objets.
 +Mais revenons à notre tâche en cours - comment pouvons-nous réellement définir un objet pour être plus souple qui as seulement quelques attributs?
- +Premièrement nous allons créer un fichier de définition d'objet. appelons-le table.script.
-But let’s get back to our task at hand – how do we actually define an object to be more versatile then only a couple of Attributes? +
- +
-First we’ll create an object definition file. Let’s call it table.script.+
<code script> <code script>
Line 547: Line 551:
</code> </code>
-//**Syntax rule no. 5** +//**Règle de syntaxe no. 5** 
-If we want to access attribute or method of an object, we use dot as seen in the previous example.//+Si nous voulons accéder à un attribut ou une méthode d'un objet, nous utilisons le point comme vu dans l'exemple précédent.//
-As we see here, we’re inside of the object so we can no longer use table.Material etc. because we don’t know how the variable holding our table will be called. That’s why we have a special identificator called **this** which points to the object itself. This way it will always set the attribute to the correct variable.+Comme nous le voyons là, nous sommes à l’intérieur de l'objet donc on ne peut plus utiliser table.Material etc... parce que nous ne savons pas comment la variable englobant notre table sera appelée. C'est pourquoi nous avons un identifiant spécial appelé **this** qui pointe sur l'objet lui-même. De cette façon ça définira toujours l'attribut à la bonne variable.
-In the script we want to create such an object, we have to first create it:+Dans le script nous voulons créer un tel objet, nous devons d’abord le créer:
<code script> <code script>
Line 558: Line 562:
</code> </code>
-and then we can setup object's properties through+et puis nous pouvons configurer les propriétés de l'objet ainsi
<code script> <code script>
-table.initialize("wood","black",100);+table.initialize("bois","noire",100);
</code> </code>
-This already looks much more flexible, but we can go one more step further. Let’s say we’re going to create a game about a table seller who will have 10 different tables. Why not use an array for them?+Cela paraît déjà beaucoup plus souple, mais nous pouvons aller encore un peu plus loin. Disons que nous allons créer un jeu sur un vendeur de table qui aura 10 tables différentes. Pourquoi ne pas utiliser un tableau pour elles?
<code script> <code script>
Line 573: Line 577:
</code> </code>
-But here’s a pitfall! You can’t do something like: **tables[a].initialize();** because WME doesn’t support dot notation for arrays or nested objects. Also you can’t make something like **Game.Scene.SomeAttribute** because WME supports only one dot nesting. But there’s a workaround through temporary variable. +Mais voilà il y a un piège! Vous ne pouvez pas faire quelque chose comme: **tables[a].initialize();** parce WME ne supporte pas la notation de point pour tableaux ou des objets imbriqués. Pas plus que vous ne pouvez pas faire quelque chose comme Game.Scene.SomeAttribute parce WME ne supporte qu'un seul point imbrication. Mais il y a une solution de contournement grâce à la variable temporaire.
-The first case would be rewritten as:+ 
 +Le premier cas serait réécrit comme:
<code script> <code script>
var tmp = tables[a]; var tmp = tables[a];
-tmp.initialize("wood","black",100);+tmp.initialize("bois","noire",100);
</code> </code>
-and the other like:+et l'autre comme:
<code script> <code script>
Line 588: Line 593:
</code> </code>
-I think that this should be enough to get you started with scripting. The rest is just an application of what you have just learned. I’m sure that you’ll have no problems understanding what’s going on now. +Je pense que cela devrait être suffisant pour vous permettre de commencer avec les scripts. Le reste est juste une application de ce que vous venez d'apprendre. Je suis sûr que vous n'aurez aucune difficulté à comprendre ce qui se passe maintenant.
 
fr/wmebook/ch2.1318937845.txt.gz · Last modified: 2011/10/18 13:37 by Anto0085
Recent changes RSS feed Creative Commons License Driven by DokuWiki