AccueilPortailFAQRechercherS’enregistrerConnexion
 

[Tuto] Afficher la valeur d'une variable

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Crazy Legs
Cliqueur Amateur
Cliqueur Amateur



Age : 15
Inscrit le : 10 Jan 2008
Messages : 310
Localisation : La Rochelle

MessageSujet: [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 langue
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 :

Code:
SetGlobalInt(1,0);
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 perplexe :
  • Les variables classiques

  • Les variables globales


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 surprise

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 XD
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 Razz.

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 ? Very Happy
Maintenant vous savez tout !!! king queen
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 Smile.

Eh ben, on en a appris des choses aujourd'hui cheers
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 Very Happy .
Sur ce je vous laisse et merci beaucoup d'avoir lu ce long tuto.
Bye bye Smile

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
Revenir en haut Aller en bas
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue



Inscrit le : 17 Avr 2006
Messages : 2608

MessageSujet: 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 sourire

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
Revenir en haut Aller en bas
Crazy Legs
Cliqueur Amateur
Cliqueur Amateur



Age : 15
Inscrit le : 10 Jan 2008
Messages : 310
Localisation : La Rochelle

MessageSujet: 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 !

cyclops
_________________

Une participation c'est parti si passion !
Revenir en haut Aller en bas
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue



Inscrit le : 17 Avr 2006
Messages : 2608

MessageSujet: Re: [Tuto] Afficher la valeur d'une variable   Lun 21 Juil - 14:25

Oui et pas qu'un peu zarb
_________________

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
Revenir en haut Aller en bas
Crazy Legs
Cliqueur Amateur
Cliqueur Amateur



Age : 15
Inscrit le : 10 Jan 2008
Messages : 310
Localisation : La Rochelle

MessageSujet: 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 <img src=" smilieid="11" /> ! je ne dois pas vendre la mèche Very Happy !!

Finalement un jeu de gestion c'est vraiment pour les utilisateurs très expérimentés et très patients surtout travaille !
_________________

Une participation c'est parti si passion !
Revenir en haut Aller en bas
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue



Inscrit le : 17 Avr 2006
Messages : 2608

MessageSujet: 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 !! zarb
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
Revenir en haut Aller en bas
Crazy Legs
Cliqueur Amateur
Cliqueur Amateur



Age : 15
Inscrit le : 10 Jan 2008
Messages : 310
Localisation : La Rochelle

MessageSujet: 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 ihih .
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 surprise des jeux de gestion "professionnel" (bon certes moins professionnel que le tiens XD )
Ça ne nous étonne plus si ces fous de l'informatique travaillent en groupe !

cyclops
_________________

Une participation c'est parti si passion !
Revenir en haut Aller en bas
Kitai
Cliqueur Amateur
Cliqueur Amateur



Inscrit le : 01 Aoû 2006
Messages : 238

MessageSujet: 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 sourire
_________________
Ga is Ga


Dernière édition par Kitai le Lun 21 Juil - 23:43, édité 1 fois
Revenir en haut Aller en bas
Crazy Legs
Cliqueur Amateur
Cliqueur Amateur



Age : 15
Inscrit le : 10 Jan 2008
Messages : 310
Localisation : La Rochelle

MessageSujet: 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 Very Happy.

Merci pour les commentaires big smile !!!

cyclops
_________________

Une participation c'est parti si passion !
Revenir en haut Aller en bas

[Tuto] Afficher la valeur d'une variable

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: AIDE A L'UTILISATION D'AGS :: Trucs & Astuces, Tutoriaux-