Skin utilisée

TimeSwitch

Création d'un menu avec inventaire

<_ n="2"/>Fonctions et variables à connaître o draw_sprite(n,img,x,y)
<_ n="3"/>Dessine la sous image img (-1 = en cours) du sprite
<_ n="3"/>d'index n dont l'origine est à la position x,y.

o Instruction Repeat
<_ n="3"/>L'instruction repeat a la forme suivante : repeat ( expression ) instruction
<_ n="3"/>L'instruction est répétée autant de fois qu'indiquée par la valeur arrondie de
<_ n="3"/>l'expression.

o Tableaux
Vous pouvez utiliser des tableaux à 1 ou 2 dimensions dans GML. Mettez l'index entre crochets. Pour les tableaux bidimensionnels, séparez les 2 index par une virgule. Quand vous utilisez pour la 1ère fois un tableau, celui-ci est créé. Chaque index commence à 0. Faites attention en utilisant des index trop grand, cela exige beaucoup de mémoire. N'utilisez jamais d'index négatifs. Chaque index est limité à 32.000 éléments et à 1.000.000 pour la taille totale.

Alors nous allons étudier un système permettant d'afficher un menu avec inventaire.

Etudions le fonctionnement général d'un menu. Un menu c'est une image de fond, des objets et un curseur. Donc le truc c'est de créer un objet qui détecte les touches appuyées, et ainsi on calcule la position du curseur puis on dessine sur l'écran le menu, puis les objets puis le curseur.

Alors comment allons-nous déplacer et calculer la position du curseur selon les touches appuyées ?
La réponse est dans l'inventaire de zelda alttp.

Ici, nous voyons que l'inventaire forme un tableau. Donc nous allons utiliser une sorte de tableau pour déplacer notre curseur.

Le truc c'est d'utiliser les numéros de colonne et de ligne. Voyons un exemple.

Dans cet exemple, nous avons un curseur en (4;2). Comment mathématiquement peut-on déplacé le curseur en (3;3).
La réponse : il faut retirer 1 à la valeur de la colonne et ajouter 1 à la valeur de rangée.
(4-1;2+1) --> (3;3)

Ainsi pour aller dans la colonne de droite il faut ajouter 1 à la valeur colonne, pour aller dans la colonne de gauche il faut retirer 1 à la valeur colonne. Pour aller dans la rangée en bas, il faut ajouter 1 et pour aller dans la rangée en haut il faut retirer 1.

Nous connaissons la position du curseur dans le tableau or l'écran de jeu n'est pas composé d'un tableau mais de pixels. Donc nous allons calculer les différentes emplacements des cases sur l'écran.

Pour cela il faut utiliser une boucle repeat et des tableaux à 1 dimension. (un tableau pour chaque composantes)

Pour 5 colonnes, le code ci-dessus renvoie les valeurs de x :

Ainsi pour connaître l'emplacement d'une colonne il suffit d'apeller la varible x[colonne]. Ainsi lorsqu'on connaît la place du curseur dans le tableau, on peut calculer sa position sur l'écran.

Exemple: le curseur se trouve la position que l'exemple du début, (4;2) donc pour afficher le curseur durant l'event draw, on écrit :

Vous avez remarqué le y[rangee], et bien il faut faire la même chose avec les rangée, il faut d'abord calculer les valeurs de y avec les arrays et la boucle for. A vous de le faire tout seul ! Si vous avez compris il n'y aura aucun problème.

Pour les objets vous créer déclarer leur emplacement au départ, et vous règlez votre script draw pour qu'ils apparaissent au bon endroit.

Exemple :

Le plan des actions de l'objet menu

Bien sûr tout ces exemple n'ont que valeur de théorie, n'allez pas tout recopier au charactère près pour voir si ça marche sans réfléchir. Ce tutorial ne vous présente que les idées pour arriver à faire votre menu. C'est à vous créer les scripts qui contrôleront votre menu.