TUTORIEL - Les Variables dans AAO

Posez toutes vos question concernant la création de procès sur AAO, ou proposez des tutoriaux pour aider les autres membres !
Post Reply
User avatar
Radian
Posts: 12763
Joined: Sun Aug 15, 2010 1:50 pm
Gender: Male
Spoken languages: Français, et optionnellement Anglais.

TUTORIEL - Les Variables dans AAO

Post by Radian »

Image
Bien le bonjour à tous !

Comme je l'ai promis récemment, je vais m'attacher ici à faire une liste des différentes possibilités qui sont offertes par l'éditeur avec les variables, en m'aidant de ce qui a déjà été fait ailleurs sur le forum, et en essayant d'en faire une sorte de compilation à laquelle vous pourrez vous référer lorsque vous souhaiterez les utiliser. Pour faire les choses bien, on va y aller progressivement, histoire de pas vous submerger avec du code. On va commencer avec quelques définitions de termes. ;)

I - KÉZAKO ?

Qu'est-ce qu'une variable ?
Spoiler : :
Et oui, forcément, il faut bien se poser la question à un moment donné. Une variable, c'est une sorte de boîte à laquelle vous donnez un nom, et une information. Cette boîte, elle est conservée par l'éditeur, et vous pouvez invoquer son contenu par son nom. Quand vous appelez votre chien Médor, il vient. Et bien là c'est pareil. Quand vous invoquez votre variable votre_chien_Medor (sans accent, et sans espace), cela se traduit par son contenu. Le nom ne sert qu'à identifier le contenu, il ne veut rien dire d'autre pour l'éditeur.
Les variables dans AAO ?
Spoiler : :
Dans l'éditeur, les variables peuvent contenir trois types de contenu : String, Word, Float.

Code: Select all

String = Une chaîne de caractère. C'est à dire une combinaison de chiffres et de lettres quelconques. C'est le type le plus générique et donc le plus simple.
Word = La même chose que String, mais sans espace. En un mot : Un seul "mot".
Float = Un nombre quelconque, décimal ou négatif.
Ces variables ont plusieurs utilisations possibles, que nous verrons en partie ici (pas toute parce qu'après ça dépend aussi un peu de votre imagination). en allant du plus simple au plus compliqué, évidemment.
Qu'est-ce qu'une expression ?
Spoiler : :
Pour identifier une expression, il suffit de savoir si vous pouvez y répondre "Vrai" ou "Faux". Par exemple :

Code: Select all

4 + 5 est une opération qui vaut 9. Dire qu'elle est vraie ou fausse n'a pas de sens.
4 = 5 est une expression qui est fausse, car 4 ne vaut pas 5.
4 < 5 est une expression vraie, car 4 a une valeur inférieure à 5.
Une expression utilise des opérateurs dit booléens, tandis qu'une opération utilise des opérateurs arithmétiques.
Opérateurs booléens et arithmétiques ?
Spoiler : :
Comme précisé ci-dessus, un opérateur booléen vous permet de vérifier si une expression est vraie ou fausse, en voici la liste :

Code: Select all

=   : Opérateur d'égalité. ( ma_variable = 4 ? Vrai/Faux)
<   : Opérateur d'infériorité ( 5 < 6 ? Vrai)
>   : Opérateur de supériorité ( 5 > 6 ? Faux)
Il y en a trois autres un peu spéciaux, mais nous les verrons plus tard. Voici maintenant les opérateurs arithmétiques.

Code: Select all

+ : Addition
- : Soustraction
* : Multiplication
/ : Division
% : Modulo/Reste d'une division (12%2 = 0 car 12/2 = 6*2 + 0. 17%4 = 1 car 17 = 4*4 + 1)
^: Puissance (4^3 = 4*4*4 = 64)
Et ça devrait être à peu près tout en ce qui concerne cette partie ! Maintenant, nous allons pouvoir passer directement aux premières manipulations que l'éditeur permet avec les variables et les expressions. :)



II - LES MANIPULATIONS CLASSIQUES

01-CRÉER UNE VARIABLE
Spoiler : :
Il y a deux manières de créer une variable : Soit on demande au joueur une valeur à entrer, soit on entre la valeur nous-même. Dans les deux cas, c'est très simple, en voici des exemples en images, ce sera plus clair !
Image

On demande au joueur d'entrer une chaîne de caractère dans une variable nommée "ma_variable"


Image

On crée directement la variable "mon_chiffre" dans laquelle on insère la valeur 4. Ici, pas besoin de définir un type, il est déduit.
Et voilà, on a crée une variable prête à l'emploi. Maintenant, voici la première chose qu'on peut en faire !
02-AFFICHER UNE VARIABLE
Spoiler : :
Encore plus simple que l'exemple précédent ! Mettons qu'on veuille afficher la variable "ma_variable". Il suffit d'écrire pour ça : [#var:ma_variable] dans une boîte de dialogue Et le tour est joué ! Ce qui donne l'enchaînement suivant :
Image

On écrit la commande dans l'éditeur -> Le contenu de la variable est demandée au joueur -> La commande affiche le contenu en jeu.
03-COPIER UNE VARIABLE
/!\ DANS CETTE PARTIE, VOUS TROUVEREZ DES EXPLICATIONS IMPORTANTES SUR LA NOTION D'INTERPRÉTATION DES VARIABLES /!\
Spoiler : :
L'intérêt peut vous sembler limiter, mais mettons que l'on veuille copier une variable pour X raisons. Il faut donc créer une variable à partir d'une autre. La première réaction pourrait être de créer une variable normalement, et de mettre le nom de la variable à copier comme valeur. Et vous auriez raison ! Mais, si vous testez juste comme ça, vous verrez que ça ne marchera pas, et que votre nouvelle variable contiendra juste le nom de votre variable à copier. C'est tout simplement parce que vous n'avez pas demandé à l'éditeur "d'interpréter" ce que vous lui avez donné.

Exemple : Je veux copier "ma_variable" dans une nouvelle variable "ma_copie". Donc je fais ça :
Image

ma_copie contient très exactement la chaîne de caractère "ma_variable".
Bien sûr, je me trompe. La valeur n'est pas interprétée, et l'éditeur comprend juste : "Ok, donc je donne à la variable ma_copie cette chaîne de caractère ("ma_variable") qui ne veut absolument rien dire pour moi. Ce n'est qu'une chaîne de caractère après tout." Si vous voulez que l'éditeur interprète ce que vous lui donnez, il faut cocher la petite case "Mode avancé", puis la case "Charger par une expression à l'exécution". Ce qui veut dire que la valeur va être interprétée par l'éditeur. Donc ! Dans notre exemple, la bonne version serait :
Image

ma_copie contient très exactement ce que contient ma_variable.


Cette fois, l'éditeur a compris : "Ok, donc je donne à la variable ma_copie le contenu de la variable ma_variable", car il a interprété ma_variable, et a reconnu qu'il s'agissait d'une variable existante, et pas d'une chaîne de caractère. En effet, dans ce mode, l'éditeur ne reconnait comme chaîne de caractère que les chaines entourées par des apostrophes ( ' ).

NB : Dans le champ : "Nom de la variable à tester", il faut rentrer le nom tel quel, sans cocher la case "Charger par une expression à l'exécution". Si vous le faites, l'éditeur regardera le contenu de la variable dont vous avez donné le nom pour trouver le nom de la variable à modifier ou à créer. Ne vous embrouillez pas.
04-MODIFIER UNE VARIABLE
Spoiler : :
Il y a plusieurs façons de modifier une variable. On peut par exemple effectuer une opération arithmétique dessus, ou ajouter un morceau de chaînes de caractères avant ou après, ce genre de choses. Toutes ces modifications se font par le biais de la copie. En fait, vous créez une variable du même nom qui écrase la précédente, ce qui revient à modifier la précédente. Voyons donc plusieurs exemples :
Image

ma_variable devient égale à ma_variable + 4 (cette opération n'a de sens que si ma_variable contenait un nombre)

Image

ma_variable devient égale à ma_variable suivie de la chaine '-sama'. (Si ma_variable contenait "Bob", elle devient "Bob-sama")

Petite explication sur ce point (dans tous les sens du terme). En dehors des apostrophes (c'est à dire pas en plein milieu d'une chaîne de caractère), le point ( . ) est interprété par l'éditeur comme opérateur de la concaténation (au même titre que + est l'opérateur de l'addition), c'est à dire de la fusion de deux chaînes de caractères. Imaginez qu'il s'agit du maillon supplémentaire qui permet de rattacher les chaînes entre elles. ;)

Image

ma_variable devient égale à ma_variable + ma_variable2. (Il s'agit simplement de l'addition de deux variables. ma_variable2 n'est pas modifiée.)

Image

Une opération arithmétique toute bête, où les priorités de calculs sont respectées : Les parenthèses d'abord, puis la multiplication.
Voilà pour les actions possibles sur les variables. Mais ces modifications ne trouvent réellement leur intérêt que lorsque vous voulez contrôler la valeur des variables de votre jeu. Est-ce que cette variable est égale à ça ? Est-ce qu'elle est inférieure ou supérieur à tant ? Si oui, je fais ci, sinon, je fais ça. C'est là que se trouve le vrai pouvoir des variables, et c'est ce qu'on va voir maintenant. :)

05-TESTER LA VALEUR D'UNE VARIABLE
Spoiler : :
Cet énoncé vous rappelle peut-être quelque chose ? C'est normal, c'est le nom exacte d'une action dans l'éditeur. Comme son nom l'indique, elle sert à vérifier si une variable a telle ou telle valeur, et envoie vers un autre message en fonction de cette valeur. Notez qu'ici on demande une valeur exacte comme réponse, pas un vrai ou faux (auquel cas il faudrait utiliser l'action "Évaluer une expression").

Le champ de la valeur peut-être renseigné exactement comme précédemment : soit avec une valeur absolue (4, 12, 145, etc...), soit avec le nom d'une variable, (ma_variable, ma_copie, etc...), ou même avec une opération (ma_variable + 4, ma_variable + ma_copie, etc...). Les deux dernières options nécessitant bien sûr de cocher la case "Charger par une expression à l'exécution".

Je n'entrerai pas dans de plus amples explications en ce qui concerne cette action. D'une part parce qu'il n'y a pas grand chose à dire, et d'autre part parce que mon autre tutoriel s'en charge déjà. :mia: On va plutôt s'attaquer aux expressions !
06-ÉVALUER UNE EXPRESSION
Spoiler : :
Maintenant, la fameuse action qu'on a du mal à utiliser. Alors, que fait-elle exactement ? En fait c'est tout simple : Elle évalue simplement si une série d'expression (une ou plusieurs) sont vraies ou fausses. Rien de plus, rien de moins. Prenons un exemple, ça sera plus parlant.
Image

Les expressions sont vérifiées dans de haut en bas.
Ici, voilà ce qui se passe chez l'éditeur :
- Je vérifie si ma_variable est inférieure à 15. -> Si oui, je vais au message 6. Si non : je passe à l'expression suivante.
- Je vérifie si ma_variable est supérieure à 30. -> Si oui, je vais au message 7. Si non : je passe à l'expression suivante.
- Il n'y a pas d'expression suivante. -> Aucune expression n'était vraie.
- Aucune de mes expressions n'est vraie : je vais au message 0.

Maintenant, mettons que je veuille vérifier d'une part si ma_variable est inférieure ou égale à 15, puis si elle est supérieure ou égale à 30. Les opérateurs <= et >= n'étant pas valide, je devrais a priori m'y prendre comme il suit.
Image

Hum... Un peu redondant tout ça nan ?
Vous l'aurez compris, il y a mieux à faire. Et c'est là en effet qu'interviennent les trois derniers opérateurs dont je vous ai parlé. Voici plutôt comment on pourrait écrire cette action.
Image

Tiens tiens... Mais qu'est-ce que c'est que ce " | " ?
Maintenant voilà ce qui se passe chez l'éditeur :
- Je vérifie si ma_variable est inférieure à 15 OU si ma_variable est égale à 15.
       -> Si oui, je vais au message 6. Si non : je passe à l'expression suivante.
- Je vérifie si ma_variable est supérieure à 30 OU si ma_variable est égale à 30.
       -> Si oui, je vais au message 7. Si non : je passe à l'expression suivante.
- Il n'y a pas d'expression suivante. Donc aucune expression n'était vraie.
- Aucune de mes expressions n'est vraie : je vais au message 0.

Le | est l'opérateur dit "OU". Il permet d'exprimer plusieurs expressions en une seule, et renvoie Vrai si au moins l'une d'elle est vraie. Le & lui, est l'opérateur dit "ET", il permet lui aussi d'exprimer plusieurs expression en une seule, mais il ne renvoie Vrai que si toutes les expressions sont indépendamment vraies.

Le dernier opérateur est l'opérateur ! d'inversion. Il inverse le résultat d'une expression. Je ne pense pas que vous en ayez besoin, mais si jamais vous avez des questions sur son utilisation, n'hésitez pas.
Et je pense qu'on s'arrêtera là pour les explications ! Il est tout à fait possible que j'ajoute de nouvelles choses (ou que j'en corrige) au fur et à mesure des questions (ou des corrections), mais je pense qu'il y a ici l'essentiel pour apprendre à manier correctement les variables. Je précise encore une chose cela dit : En programmation comme dans beaucoup d'autres domaines, on échappe pas à la phase de tests : Faites des tests, essayez différentes possibilités, et voyez les résultats. C'est comme ça qu'on apprend, qu'on comprend, et qu'on peut découvrir de nouvelles choses. :wink:

J'espère que le tutoriel aura été quand même assez clair sur les points qu'il aura abordé, et je vous invite à poser toutes les questions ici histoire de ne pas avoir 10 000 topics sur les variables si jamais vous en avez. Pour finir, je vous laisse avec une liste de petites astuces pour la manière dont vous pouvez utiliser les variables dans votre procès ! Si vous en avez d'autres, n'hésitez pas à les partager. :)

Merci d'avoir lu, et bon courage pour vos projets !

III - LES ASTUCES CADEAUX

Pair ou pas pair ?
Spoiler : :
Si vous voulez vérifier qu'une variable est paire, vérifiez l'expression suivante :

Code: Select all

ma_variable % 2 = 0 (Car tout nombre pair est divisible par 2, CQFD.)
Profil/Preuve révélé(e) ?
Spoiler : :
Si vous voulez vérifier qu'une preuve ou un profil est déjà connu(e) du joueur, vérifiez l'expression suivante :

Code: Select all

f:evidence_is_revealed('preuve/profil', id_preuve/id_profil)
Est-ce dans ma chaîne de caractère ?
Spoiler : :
Si vous voulez vérifier qu'une chaîne de caractère contient une certaine sous-chaîne, vérifiez l'expression suivante :

Code: Select all

f:str_contains('chaine_de_caractere', nom_variable)
Nombre aléatoire
Spoiler : :
Si vous voulez que l'éditeur vous donne un chiffre au hasard entre min et max, passez par l'expression suivante :

Code: Select all

f:random_int(min, max)
Contre-interrogatoire qui se finit automatiquement
Spoiler : :
Pour créer un tel contre-interrogatoire, vous avez besoin de créer ces trois messages à la fin de chaque bloc "Attaque".
Image

L'attaque a bien été faite, on ajoute 1 au nombre d'attaque réalisée.

Image

On cache le message pour ne pas que cette attaque soit comptabilisée une seconde fois dans le cas où le joueur la réattaque.

Image

On vérifie si toutes les attaques ont été faite. Si oui, on sort du CI, sinon, on continue normalement.
Valeur d'un champ en fonction d'une variable
Spoiler : :
Lorsque vous devez préciser une valeur dans n'importe quel champ que ce soit (ID de message, nom de variable, valeur d'une variable, etc...), il vous est possible de la soumettre à la valeur d'une variable en une ligne, que voici :

Code: Select all

((condition) & 'valeur_si_vrai') | 'valeur_si_faux'
Prenons un exemple. Je veux faire que selon que le joueur a découvert ou non une preuve quand il parle à Tektiv, celui-ci lui dit soit que la police continue de chercher la preuve, soit que maintenant ils vont passer à autre chose. Dans l'éditeur, ça donnerait ça :
Image

Deux messages au lieu de... trois. Bon ok, le gain est minime, mais c'est un exemple. ='(
Image

Ne vous fiez pas au rouge derrière l'expression, elle est bel et bien valide.
Et comme l'expression en question est un peu longue, la voici entièrement :

Code: Select all

((f:evidence_is_revealed('preuve',1)) & 'On va sûrement chercher autre chose maintenant...' ) | 'On cherche toujours la preuve mon gars.'
Cette possibilité peut vous sembler un peu obscure pour l'instant, et à vrai dire je pense qu'elle est surtout utile lorsque l'on veut préciser l'ID d'un message en fonction d'une variable (en raccourci dans l'action "Pointer une zone sur une image" par exemple), mais je voulais vous montrer celle-là pour que vous envisagiez encore plus loin ce qu'il est possible de faire.

Il ne tient qu'à vous de faire des tests. :)
Last edited by Radian on Wed Apr 25, 2018 8:03 am, edited 4 times in total.
Image
User avatar
Aristide
Posts: 2401
Joined: Wed Jun 19, 2013 8:37 pm
Gender: Male
Spoken languages: Français, English
Location: Into the Unknown ♪

Re: TUTORIEL - Les Variables dans AAO

Post by Aristide »

FEURST
Consacré nouvel empereur d'AAO, je compte bien envahir le monde à l'aide de mon armée de procès makers !

Successeur d'Unas, mais au moins trois fois mieux, bien entendu.
Loulou01
Posts: 1184
Joined: Tue Oct 28, 2014 8:27 pm
Spoken languages: Français

Re: TUTORIEL - Les Variables dans AAO

Post by Loulou01 »

Moi qui voulais un tuto de variables, (j'ai réussi qu'une variable en 6 mois perso xD)
Merci Radian !
User avatar
Aristide
Posts: 2401
Joined: Wed Jun 19, 2013 8:37 pm
Gender: Male
Spoken languages: Français, English
Location: Into the Unknown ♪

Re: TUTORIEL - Les Variables dans AAO

Post by Aristide »

Plus sérieusement, merci beaucoup cela me sera bien utile. :)
Consacré nouvel empereur d'AAO, je compte bien envahir le monde à l'aide de mon armée de procès makers !

Successeur d'Unas, mais au moins trois fois mieux, bien entendu.
User avatar
Radian
Posts: 12763
Joined: Sun Aug 15, 2010 1:50 pm
Gender: Male
Spoken languages: Français, et optionnellement Anglais.

Re: TUTORIEL - Les Variables dans AAO

Post by Radian »

Y a pas de quoi. :) Dites moi si vous avez des questions ou des suggestions, je ne suis pas à l'abri des erreurs ou des oublis.
Image
Post Reply