Patch
Patch: 288.3
Patch Bêta:
Officiel
  • Indie Game Creator
Compte
 
 
Dernier Message
Re : Compilation apk
par Emmanuel
Aujourd'hui à 13:32:42

Re : [Projet] Dark Devotion
par Xsoul
Aujourd'hui à 09:32:22

Re : [Projet] Dark Devotion
par Pit73
Aujourd'hui à 09:08:28

Re : Arrondir une valeur au centième
par Seyjin
Aujourd'hui à 08:23:54

Re : Compilation apk
par hars
Aujourd'hui à 07:52:01

Re : Platformer 2D
par Xsoul
Aujourd'hui à 07:41:55

Arrondir une valeur au centième
par Funkadicte
Aujourd'hui à 00:40:13

Re : Platformer 2D
par ptiseigneur
22 mai 2017 à 21:46:52

Partenaires
Les Articles du site

Les Tableaux
Catégorie : Tutoriaux. 23/04/2013. Posteur : Monos.


Les Tableaux
Bonjour mes amies et mes amis. Voici un nouveau tuto qui va parler des tableaux dans The Games Factory 2, Multimédia Fusion 2, et Multimédia Fusion 2 version Développeur. Le tuto est aussi valable sur la version Newsground de TGF2.

Les trois logiciels possèdent nativement une extension qui se nomme Tableau. (Array sur les versions anglaises)

L'objet Tableau permet de mémoriser une chaîne (Lettre et Chiffres), ou des valeurs entières(Que des chiffres) sur un maximum de 3 dimensions. (X,Y,Z). Pour commencer, je vais vous expliquer ce qu'est « une dimension » pour un tableau.

Les Tableaux en 1D
Si vous avez utilisé MMF vous avez je pense utilisé un tableau à 1 dimension (enfin presque).
Si si, les variables et les chaines de variable. (Locale ou pas)
Dans chaque variable, vous pouvez placer qu'une seul chaine/valeur. Les variables sont désignées par une ID (un chiffre). Dans un tableau c'est pareil. C'est une ligne ( X ) coupée par des cases (dit Index), et chaque case possède une ID qui est l'adresse de celui si et qui peut contenir une chaîne ou une valeur numérique suivant la configuration de l'objet.


Voici un exemple simple pour comprendre. Le chiffre 25 se trouve sur la case (X1), et sur la case (X6) se trouve le chiffre 69.

Les Tableaux en 2D
Vous avez déjà joué à la bataille navale ? E-7 ? Touché ! E-8 ? Coulé ! Tu as coulé mon sous marin.
Ba vous utilisés un tableau en 2D ! Pour trouver un point, il faut deux coordonnés. Le X et le Y. (Horizontale et Verticale).


Voici un exemple simple pour comprendre. Le chiffre 32 se trouve sur la case (X7) ET (Y1). Il faut deux nombres pour trouver l'adresse de la casse. (X7,Y1).
En (X1,Y4) se trouve le nombre 44. Et en (X4,Y6) se trouve le nombre 69.
Tien cela ne vous rappelle pas des cours de mathématiques pour poser des points sur des repères orthonormé ?
A noter que j'utilise la notation (X4,Y6) pour bien montrer, mais vous pouvez voir ce genre de notation. (4,6) sans le X et le Y ou aussi [4,6].

Les Tableaux en 3D
Alors la, ça va très certainement être dur à me faire comprendre. Bon la 3D (3em dimension) apporte une nouvelle « couche » pour désigner un point. La profondeur. (Z)
Ce qui veut dire un carreau en 2D peut être encore découpé dans ça profondeur. (Comme des calques aussi)
Dans l'exemple plus haut, le nombre 69 serait en (X4,Y6,Z0 (ou Z1 suivant l'option indexation.)) car il est le sur le premier plan.

Pour bien me faire comprendre je reprend aussi le mini exemple de Falco qu'il m'a fait !
Pour comprendre le système de profondeur, on peut voir ça comme un système de calque.
Z étant un calque.
X:19 Y: 25 sur le calque (z) 1
X:32 Y: 43 sur le calque (z) 2

Paramétrer son tableau.
Un tableau ça se paramètre avant l'utilisation !

Voyons voir un peu les options de configuration du tableau.

Dimensions
C'est ici que vous allez choisir le type de tableau que vous allez utiliser. (1D,2D,3D)
Dans la configuration native, le tableau est en 1D ! (10 cases en X, 1 case en Y et 1 case en Z)
Attention à ne pas placer 0 cases en Y et Z!)
Pour passer en 2d, il suffit de changer la valeur du nombre de case en Y idem en Z pour avoir un tableau en 3d !

Numérique ou texte?
L'option parle d'elle même. Un tableau exclusif en valeur ou en chaîne de caractère ?
Attention vous ne pouvez pas changer le type de tableau quand le programme est lancé.

Option
Deux options à cocher :
-Index basé sur 1 : C'est simple, le 1er carreau à l'id 1 et non 0 si c'est coché.
-Global à toute l'application : Si je fais un 2em tableau sur une autre scène qui porte le même nom qu'un tableau d'une autre scène, les données du tableau seront les mêmes et communique entre eux.
Cool non ?

Écrire des choses dans un tableau.
C'est bien d'avoir un tableau dans notre application, mais c'est encore mieux de pouvoir inscrire des trucs bidule et chouette dedans. Vous allez voir, c'est simple. Je vais vous montrer comment écrire la valeur numérique 69 (j'adore ce chiffre je sais) sur un tableau en 2d au cordonnée (6,9).
Bon avant j'ai bien sur configuré mon tableau en 2d et en valeur numérique.

Dans l'éditeur d’événement, j'ai fait une condition du type : Lors de l'appui sur la touche '' A ''.
Et dans les effets, sur la case du tableau / Écrire/Écrire une valeur en XY, qui correspond à l'écriture d'une donnée dans un tableau en 2d. Écrire en X c'est pour le 1D et Écrire en XYZ pour la 3d.

Attention aussi à ne pas vous mélanger entre Valeur et Chaîne suivant ce que vous voulez faire.


L'éditeur d'expression s'ouvre :
-Entrer la valeur à écrire : C'est la valeur (ou chaîne si vous êtes dans l'option chaîne bien sur) qui sera mémorisée dans le tableau. Dans notre exemple, nous allons écrire 69.
-Entrer l'index X : Dans qu'elle case ( X ) ce nombre va aller ? Dans notre exemple nous avons choisis la case (X6). Donc je note 6.
-Entrer l'index en Y : Comme X mais pour la case Y. J'avais dit (Y9). Donc 9.

Et voilà ce que cela donne avec l'éditeur d'action :

Bravos vous avez mémorisé un nombre dans votre tableau.

Changer une donnée dans le tableau.
C'est simple, il suffit de refaire la même manipulation avec une autre donnée. Exemple si finalement en (6,9) je veux placer le nombre 100 à la place du 69, un peu plus tard dans le programme, je refait la même chose :

-Entrer la valeur à écrire : C'est la valeur (ou chaîne si vous êtes dans l'option chaîne bien sur) qui sera mémorisé dans le tableau. Dans notre exemple, nous allons écrire 100,
-Entrer l'index X : Dans qu'elle case ( X ) ce nombre va aller ? Dans notre exemple nous avons choisis la case (X6). Donc je note 6.
-Entrer l'index en Y : Comme X mais pour la case Y. J'avais dit (Y9). Donc 9.

Et voilà le nouveau nombre est mémorisé. Simple non ?

Sortir des données !
A oui, c'est cool de placer des données dans un tableau, mais savoir les sortir c'est encore mieux pour travailler tout ça. Vous allez voir, c'est simple comme bonjour. Dans l'exemple que je vais montrer, je vais afficher la valeur contenue en (6,9), pour ça j'ai placé l'objet compteur sur ma scène.
Toujours sur la même ligne de condition, sur la case compteur, je vais utiliser l'option changer compteur. L'éditeur d'expression s'ouvre. Je vais récupérer les données d'un objet et utiliser l'option : Lire la valeur à la position XY.

Cela va inscrire ça dans l'éditeur d'expression.
ValueAtXY( "Tableau", >Entrer le décalage en X<, >Entrer le décalage en Y<)
Maintenant remplacer : Entrer le décalage en X par 6.
Entrer le décalage en Y par 9.

Et voilà quand vous allez utiliser la touche, A le chiffre 69 sera mémorisé dans le tableau en (6,9)
et la compteur va lire la valeur en (6,9) pour l'afficher.

Mais qu'elle est l'utilité d'un tableau ?
Je ne peux pas trop répondre à cette question étant donnée que souvent l'utilisation d'un tableau est un goût personnelle. Elle se substitue à remplacer des variables globales (ou chaine de texte).
Par exemple si il faut tenir compte des points de vie « de plusieurs monstres », dans un System de combat à la RPG. Que d'avoir des variables globales ou locales, un tableau peut être utile. Surtout si on ajoute les points de magie, des points de caractéristique …

J'utilise un tableau pour définir les cases qui bloques dans un système de déplacement case par case.
Un tableau en 2d me permet d'avoir les X et les Y qui représentent la carte de jeu. Quand le joueur veux se déplacer, un test est effectué pour savoir si la case à coté possède une valeur qui représente une case libre ou pas. Et suivant cette valeur, le déplacement se fait ou pas. Cela évite de passer par des masques en image. (C'est une autre technique donc). Je peux même utiliser un tableau en 3d pour désigner un type id de la case pour effectuer un bruit de pas ou autre programmation utile. (Enfin attention à la gourmandise en ram des tableaux)
Télécharger l'exemple d'utilisation d'un tableau pour faire des déplacements en case par case.

Et surtout pour moi, la force d'un tableau, c'est de pouvoir être sauvegardé et rechargé dans MMF. Cela permet de faire des sauvegardes, des fichiers de map ou bien d'autre utilités que je n'ai pas en mémoire.

D'autre option d'un tableau.
Vous pouvez sortir le nombre de index que possède une dimensions. Il y a aussi des options de position. Comme un curseur invisible qui se place sur un index ! (Trois index, sur les X,Y et Z).


Le mot de la fin
Fin !
Xd Bon voilà la fin du petit tuto sur les tableaux. J'ai donné un exemple sur le fonctionnement d'une valeur numérique, pour les chaîne de caractère c'est bien sur la même chose.
Bonne journée et bon MMFing.
Le 02/05/2015 par : ValLoche23
Salut, juste une question. Est-ce que une fois qu'on quitte l'application, est-ce que le tableau est effacé ?
Le 02/05/2015 par : Monos
je pense que oui , test !
Le 02/05/2015 par : ValLoche23
Ah bah oui, merde.

Comment faire pour enregistrer alors les données écrite dans le tableau ?
Le 03/05/2015 par : Monos
Tu enregistres ça sur un fichier et tu les rappelles. Tu as les options.
Le 03/05/2015 par : ValLoche23
C'est dans les options ? Attend voir, je regarde x)
Le 03/05/2015 par : ValLoche23
C'est bon, j'ai vu ! ça marche :D
Laissez un commentaire ?
Votre Nom ou Pseudo

Question anti robot (et de François):Le résultat de 4 + 4 (En lettre minuscule)

Question anti robot 2: Site Web (Ne rien marquer*)

Votre message

Balise BB code :
[b]Gras[/b]
[i]Italique[/i]
[img]Lien de l'image[/img]
[url]Lien Hyper Texte[/url]
[url=Lien Hyper Texte]Texte[/url]
* Laissez ce champs libre. Les robots comblent tous les champs, ça fait donc une bonne protection.