Crazy Legs Cliqueur Amateur


Age : 15 Inscrit le : 10 Jan 2008 Messages : 310 Localisation : La Rochelle
| Sujet: [Tuto] Afficher la valeur d'une variable Lun 21 Juil - 13:13 | |
| Bonjour, j'apporte une petite astuce pour vous aider à la programmation AGS. Avant toute chose, je tiens à dire que le script est beaucoup plus performant qu'on ne peut le penser. Vous le savez certainement je pense, AGS est très familier avec le langage C. J'ai eu une idée, et en utilisant la fonction %ld à une variable, il est possible d'afficher sa valeur !!
Pourquoi ?
Et bien par exemple : afficher le nombre de pièce qu'a récolté un aventurier, sous forme de message bien sûr ^^. Vous ouvrez votre inventaire et puis vous voulez savoir combien de pièces vous possédez, donc clic droit ==> mode regarder, ensuite clic gauche sur le sac de pièce ==> Vous avez 38 pièces d'or !! Au cours de l'aventure vous en ramassez d'autres, vous ouvrez votre inventaire, mode "look" puis clic sur le sac d'or ==> Vous avez 49 pièces d'or !!
Magique, et ceci sans se tracasser l'esprit à créer 50 items qui ont pour image un sac d'or puis de programmer tous les messages ==> Vous avez 1...2....3.....4...... etc... pièces d'or.
La théorie c'est bien, la pratique c'est mieux :
Voilà, le moment le plus intéressant  En faite, si je garde cet exemple, la ligne de code serait :
| Code: | Display("Vous avez %ld pièces d'or !!", piece); |
En faite, avant tout, vous devez créer une variable (piece en l'occurrence). Alors attention car si les objets sont dans d'autres rooms, vous devrez créer une variable global, en utilisant la fonction :
Pour plus d'infos ==> Clic ici
Dès que l'aventurier gagne 35 pièces :
| Code: | SetGlobalInt(1, GetGlobalInt(1)+35); |
Ce ligne veut dire : "Mettre à la variable 1 la valeur de la variable 1 + 35" Attention il y a bien deux types de GlobalInt : le Get et le Set. En faite ce n'est pas compliqué, le Set permet de créer ou de modifier une variable (modifier = ajouter, soustraire, etc...) Le Get permet d'afficher la valeur actuelle de la variable.
La méthode pour afficher les messages est la même.
| Code: | display("Vous avez %ld pièces d'or", GetGlobalInt(1)); |
Nous constatons donc qu'il y a deux types de variables :
Le choix est vite fait 
Si votre variable ne dépasse pas la room, va pour un int ! Si votre variable nécessite son utilisation sous plusieurs rooms, va pour un global ! Si vous n'êtes pas sûr de vous, va aussi pour un global, comme ça vous ne risquez rien...
N'oubliez pas que vous pouvez comparer les variables entres elles
Toujours le même exemple :
Vous avez deux sacs de pièces, l'un d'or, l'autre d'argent, imaginons que l'aventurier ne veuille pas les mélanger, par exemple, il ne peut acheter des armes qu'avec de l'or et des sorts qu'avec de l'argent, bref... Bien sûr il faut deux items, l'un d'un sac d'or l'autre d'un sac d'argent.
Le problème est le suivant :
Sac d'or = 50 Sac d'argent = 122
Clic sur sac d'or en mode "look", un message affiche ceci :
Vous avez 50 pièces d'or. Vous avez 172 pièces en tout.
Pareil pour sac d'argent :
Vous avez 122 pièces d'argent. Vous avez 172 pièces en tout.
Quel est ce script de fou ? =====> Celui de Alucard peut être Non plus sérieusement, c'est très très simple, voilà nos données :
| Code: | SetGlobalInt(1,50); // variable 1 (sac d'or) avec 50 pour valeur (pieces) SetGlobalInt(2,122); // variable 2 (sac d'argent) avec 122 pour valeur (pieces). |
C'est tout ^^, ces variables ce trouvent dans la section : "game_start" ; bon alors bien sûr imaginons que nous débutons le jeu avec ces sommes là dès le départ .
Voilà, maintenant les scripts, alors celui-ci nous montre le nombre de pièces d'or si clic sur sac d'or en mode "look"
| Code: | // script for Inventory item 1 (sac d'or): Look at inventory item Display("Vous avez %ld pieces d'or", GetGlobalInt(1)); Display("Vous avez %ld pieces en tout", GetGlobalInt(3)); |
Jusque là, pas de soucis. Nous voulons indiquer l'or => variable 1.
Nous voulons indiquer ensuite le nombre total de pièce => insertion d'une 3ème variable qui additionne les variables 1 et 2 (or + argent). Nous allons donc la mettre dans la section : "repeatedly_execute" Voilà le script :
| Code: | function repeatedly_execute() { // put anything you want to happen every game cycle here SetGlobalInt(3, GetGlobalInt(1) + GetGlobalInt(2)); |
Le variable 3 est créée, sa valeur est égale à l'addition des valeurs des variables 1 et 2. Compliqué ? Non !!!
SetGlobalInt(3, GetGlobalInt(1) + GetGlobalInt(2)); Création d'une variable(numéro : 3, valeur : valeur de variable n°1 + valeur de variable n°2).
C'est mieux ?  Maintenant vous savez tout !!! Si clic sur sac d'argent en mode "look" : Pareil
| Code: | // script for Inventory item 2 (sac d'argent): Look at inventory item Display("Vous avez %ld pieces d'argent", GetGlobalInt(2)); Display("Vous avez %ld pieces en tout", GetGlobalInt(3)); |
La seule chose qui a changée c'est la 1ère ligne, la variable choisit est la 2 puisque nous voulons le nombre de pièce d'argent ; le message également a changé, remplacez "or" par "argent". Autrement dit vous n'avez qu'à copier/coller le 1er script et modifier le second sur ce que je viens de dire .
Eh ben, on en a appris des choses aujourd'hui J'espère avoir été clair et surtout vous permettre d'améliorer vos projets. Car un jeu sans variables, ce n'est pas un jeu . Sur ce je vous laisse et merci beaucoup d'avoir lu ce long tuto. Bye bye 
See you again soon _________________
 Une participation c'est parti si passion !
Dernière édition par Crazy Legs le Mer 23 Juil - 14:51, édité 1 fois |
|
Shai-la Ouvrière en Chef de la Grande Tasse Bleue


Inscrit le : 17 Avr 2006 Messages : 2608
| Sujet: Re: [Tuto] Afficher la valeur d'une variable Lun 21 Juil - 13:47 | |
| Très intéressant, et je me permettrais d'ajouter une autre astuce
Vous pouvez intégrer des textes modifiables dans des dialogues en utilisant %s.
Par exemple, mettons qu'au début du jeu, vous laissez au joueur le choix de donner un nom à son personnage. Vous créer dans le GUI un label nommé "nomjoueur". Au début du jeu, vous créez un GUI avec un text box (nommé par exemple "entrezlenom") où le joueur peut entrer son nom. Avec une ligne de code, vous faites :
nomjoueur.Text = entrezlenom.Text;
ainsi le nom du joueur apparaîtra dans le GUI. Et vous pourrez appeler le nom du joueur au cours d'un dialogue comme ceci :
cPersonnage.Say("Bonjour %s !", nomjoueur.Text);
ou
Display("%s ne peut pas faire cela.", nomjoueur.Text);
C'est magique !  _________________
 http://www.ninatonnerre.com : le site officiel de la BD Nina Tonnerre http://katurajdr.fr : mon forum officiel sur mes BD et autres créations |
|
Crazy Legs Cliqueur Amateur


Age : 15 Inscrit le : 10 Jan 2008 Messages : 310 Localisation : La Rochelle
| Sujet: Re: [Tuto] Afficher la valeur d'une variable Lun 21 Juil - 14:24 | |
| Oui exact, je connais ça aussi mais j'avais pas pensé qu'on pouvait le mettre dans AGS.
Concrètement :
%ld = chiffres %s = lettres
Je parie Shai-la que tu as utilisé ces fonctions dans ton jeu Horse Park !
 _________________
 Une participation c'est parti si passion ! |
|
Shai-la Ouvrière en Chef de la Grande Tasse Bleue


Inscrit le : 17 Avr 2006 Messages : 2608
| Sujet: Re: [Tuto] Afficher la valeur d'une variable Lun 21 Juil - 14:25 | |
| Oui et pas qu'un peu  _________________
 http://www.ninatonnerre.com : le site officiel de la BD Nina Tonnerre http://katurajdr.fr : mon forum officiel sur mes BD et autres créations |
|
Crazy Legs Cliqueur Amateur


Age : 15 Inscrit le : 10 Jan 2008 Messages : 310 Localisation : La Rochelle
| Sujet: Re: [Tuto] Afficher la valeur d'une variable Lun 21 Juil - 14:32 | |
| En faite c'est ça la source d'un jeu de gestion, les indénombrables variables qui la compose, en comptant les %s si tu permets de donner un nom au cheval... Oups " smilieid="11" /> ! je ne dois pas vendre la mèche !!
Finalement un jeu de gestion c'est vraiment pour les utilisateurs très expérimentés et très patients surtout ! _________________
 Une participation c'est parti si passion ! |
|
Shai-la Ouvrière en Chef de la Grande Tasse Bleue


Inscrit le : 17 Avr 2006 Messages : 2608
| Sujet: Re: [Tuto] Afficher la valeur d'une variable Lun 21 Juil - 15:22 | |
| Je te le fais pas dire... J'ai des dizaines de milliers de lignes de code !! Et quand tu te rends compte qu'il y a un truc qui marche pas, t'es bon pour en corriger des dizaines à chaque fois. Il faut prendre en compte toutes les combinaisons chevaux/cavaliers... je me suis lancée dans un truc de dingue ! Mais je vois le bout !  _________________
 http://www.ninatonnerre.com : le site officiel de la BD Nina Tonnerre http://katurajdr.fr : mon forum officiel sur mes BD et autres créations |
|
Crazy Legs Cliqueur Amateur


Age : 15 Inscrit le : 10 Jan 2008 Messages : 310 Localisation : La Rochelle
| Sujet: Re: [Tuto] Afficher la valeur d'une variable Lun 21 Juil - 15:37 | |
| Ben finalement te souhaiter bonne chance ne servait à rien en faite lol. J'imagine bien l'état de ton script . A mon avis faire ce genre de jeu c'est une preuve de confiance en soi et de maîtrise. Si quelqu'un ne connais pas 25% de mon tuto, il a même pas besoin de chercher midi à 14h !! Quand on pense à des jeux comme Sims des jeux de gestion "professionnel" (bon certes moins professionnel que le tiens ) Ça ne nous étonne plus si ces fous de l'informatique travaillent en groupe !
 _________________
 Une participation c'est parti si passion ! |
|
Kitai Cliqueur Amateur


Inscrit le : 01 Aoû 2006 Messages : 238
| Sujet: Re: [Tuto] Afficher la valeur d'une variable Lun 21 Juil - 21:42 | |
| Très clairement rédigé, la mise en page permet une bonne lisibilité, des conseils pratiques qui soulèvent un point à côté duquel il serait bien dommage de passer.
Le fichier d'aide d'AGS consacre également un petit chapitre au sujet, je vous mets un lien vers une page traduite ici, mais ceci est bien sûr disponible dans le fichier d'aide original (le lien mène vers la version traduite par mes "soins").
Bonne création à vous tous ^^
PS : Pour être un peu chipoteur, notons que définir une troisième variable pour un total de pièces est dispensable, du moins dans l'exemple donné :
| Crazy Legs a écrit: | | Code: | function repeatedly_execute() { // put anything you want to happen every game cycle here SetGlobalInt(3, GetGlobalInt(1) + GetGlobalInt(2)); |
Le variable 3 est créée, sa valeur est égale à l'addition des valeurs des variables 1 et 2.
|
Cela puisqu'on passe une valeur numérique après le message et celle-ci est automatiquement calculée par le moteur, avant l'exécution à proprement parlée. Soyons clairs : plutôt que passer une variable qui contient l'addition, passons directement l'addition elle-même :
| Code: | Display("Vous avez %ld pieces en tout", GetGlobalInt(1) + GetGlobalInt(2));
|
Ce qui évite tout de même de mettre du code dans repeatedly_execute, ce qui n'est pas rien  _________________ Ga is Ga
Dernière édition par Kitai le Lun 21 Juil - 23:43, édité 1 fois |
|
Crazy Legs Cliqueur Amateur


Age : 15 Inscrit le : 10 Jan 2008 Messages : 310 Localisation : La Rochelle
| Sujet: Re: [Tuto] Afficher la valeur d'une variable Lun 21 Juil - 22:47 | |
| Ce n'est pas faux. En fait le but du tuto c'est d'apprendre à utiliser la fonction %ld et de voir en profondeur les fonctions SetGlobalInt. Donc bon j'ai laissé cette variable pour que cela soit plus compréhensible, sinon c'est trop technique .
Merci pour les commentaires !!!
 _________________
 Une participation c'est parti si passion ! |
|