| [résolu]fonction | |
|
|
Auteur | Message |
---|
hanakin Cliqueur Amateur
Nombre de messages : 492
Age : 59
Localisation : Angers
Date d'inscription : 12/09/2012
| Sujet: [résolu]fonction Lun 29 Sep 2014 - 14:38 | |
| bonjours un truc que je comprend pas bien , c'est créer une fonction; je veux faire deux fonction (par exemple) Une pour afficher des objets l'autre pour effacer. Dans le header j'ais mis: - Code:
-
// Main header script - this will be included into every script in // the game (local and global). Do not place functions here; rather, // place import definitions and #define names here to be used by all // scripts. import function afficher(objet); import function effacer(objet); Dans le global script: - Code:
-
function afficher(objet) { objet.Transparency=100 ; Wait(1) ; objet.Transparency=90 ; Wait(1) ; objet.Transparency=80 ; Wait(1) ; objet.Transparency=70 ; Wait(1) ; objet.Transparency=60 ; Wait(1) ; objet.Transparency=50 ; Wait(1) ; objet.Transparency=40 ; Wait(1) ; objet.Transparency=30 ; Wait(1) ; objet.Transparency=20 ; Wait(1) ; objet.Transparency=10 ; Wait(1) ; objet.Transparency=0 ; Wait(1) ; } function effacer(objet) { objet.Transparency=0 ; Wait(1) ; objet.Transparency=10 ; Wait(1) ; objet.Transparency=20 ; Wait(1) ; objet.Transparency=30 ; Wait(1) ; objet.Transparency=40 ; Wait(1) ; objet.Transparency=50 ; Wait(1) ; objet.Transparency=60 ; Wait(1) ; objet.Transparency=70 ; Wait(1) ; objet.Transparency=80 ; Wait(1) ; objet.Transparency=90 ; Wait(1) ; objet.Transparency=100 ; Wait(1) ; } Je voudrais que objet(dans la fonction) soit remplacer au lancement de la fonction par l'objet selectionner par exemple une image un logo : afficher.Logo() ; ou logo est l'objet a afficher/effacer pour eviter de taper des lignes repetitif je dois pas bien faire car ça marche pas et en plus ça plante (j'espere que j'ais ete assez clair) _________________ Ce qui est utile à beaucoup l'emporte sur les désirs du petit nombre. ( Spock)
Dernière édition par hanakin le Mar 4 Aoû 2015 - 8:23, édité 1 fois |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]fonction Lun 29 Sep 2014 - 15:22 | |
| Salut hanakin, Je pense que tu n'es pas loin du but. J'avais posté un message décrivant les fonctions personnalisées il y a fort fort longtemps (que valoulef a consciencieusement recensé dans cette liste). Le code que tu as proposé contient tout d'abord un petit problème : tu ne spécifies pas le type du paramètre de ta fonction (la variable objet réfère-t-elle à un personnage, un objet, un GUI ? AGS n'a aucun moyen de le savoir puisqu'il ne parle pas notre langue et est incapable d'analyser le nom de variable objet). Il faut donc spécifier que objet est un nom pour une variable de la classe Object (dans l'importation et dans la déclaration) : - Code:
-
import function afficher(Object* objet); import function effacer(Object* objet); Puis : - Code:
-
function afficher(Object* objet) { // ...
function effacer(Object* objet) { Ensuite, avec le code que tu as proposé, ces fonctions ne seraient pas des méthodes, c'est-à-dire qu'on ne pourrait pas les utiliser après le nom d'un objet suivi d'un point, mais plutôt comme ça : afficher(Logo); ou effacer(Logo);. Si tu veux en faire des méthodes pour la classe Object, il va falloir changer légèrement la déclaration des paramètres de la fonction (encore une fois, aussi bien dans l'importation que dans la déclaration), comme ceci : - Code:
-
import function afficher(this Object*); import function effacer(this Object*); Puis : - Code:
-
function afficher(this Object*) { this.Transparency=100 ; // ...
function effacer(Object* objet) { _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
hanakin Cliqueur Amateur
Nombre de messages : 492
Age : 59
Localisation : Angers
Date d'inscription : 12/09/2012
| Sujet: fonction Lun 29 Sep 2014 - 15:52 | |
| Merci kitai de ta reactivité j'en etait pas tres loin mais je tournais en rond je vais tester car cela pourra me servir pour differente chose repetitive J'avais vu un truc du genre sur le site anglais mais mon etoile etait pas au bon endroit import function afficher(this* Object); import function effacer(this* Object); Merci J'ai utiliser la 2eme solution P... ça m'ennerve ça marche au poil Si ça peux servir je met ça en dessous Header: - Code:
-
import function afficher(this Object*); import function effacer(this Object*); GlobalScript: - Code:
-
function afficher(this Object*) { this.Transparency=100 ; Wait(3) ; this.Transparency=90 ; Wait(3) ; this.Transparency=80 ; Wait(3) ; this.Transparency=70 ; Wait(3) ; this.Transparency=60 ; Wait(3) ; this.Transparency=50 ; Wait(3) ; this.Transparency=40 ; Wait(3) ; this.Transparency=30 ; Wait(3) ; this.Transparency=20 ; Wait(3) ; this.Transparency=10 ; Wait(3) ; this.Transparency=0 ; Wait(3) ; } function effacer(this Object*) { this.Transparency=0 ; Wait(3) ; this.Transparency=10 ; Wait(3) ; this.Transparency=20 ; Wait(3) ; this.Transparency=30 ; Wait(3) ; this.Transparency=40 ; Wait(3) ; this.Transparency=50 ; Wait(3) ; this.Transparency=60 ; Wait(3) ; this.Transparency=70 ; Wait(3) ; this.Transparency=80 ; Wait(3) ; this.Transparency=90 ; Wait(3) ; this.Transparency=100 ; Wait(3) ; } Lancer la commande (Logo) etant un objet: - Code:
-
Logo.afficher() ; _________________ Ce qui est utile à beaucoup l'emporte sur les désirs du petit nombre. ( Spock) |
|
| |
hanakin Cliqueur Amateur
Nombre de messages : 492
Age : 59
Localisation : Angers
Date d'inscription : 12/09/2012
| Sujet: fonction Lun 29 Sep 2014 - 17:02 | |
| J'y pense comme j'ai des wait dans ma fonction je peux peut-etre aussi definir la valeur du wait Et oui ça marche - Code:
-
import function afficher(this Object*,int X); import function effacer(this Object*, int X); - Code:
-
function afficher(this Object*,int X) { this.Transparency=100 ; Wait(X) ; this.Transparency=90 ; Wait(X) ; this.Transparency=80 ; Wait(X) ; this.Transparency=70 ; Wait(X) ; this.Transparency=60 ; Wait(X) ; this.Transparency=50 ; Wait(X) ; this.Transparency=40 ; Wait(X) ; this.Transparency=30 ; Wait(X) ; this.Transparency=20 ; Wait(X) ; this.Transparency=10 ; Wait(X) ; this.Transparency=0 ; Wait(X) ; } function effacer(this Object*, int X) { this.Transparency=0 ; Wait(X) ; this.Transparency=10 ; Wait(X) ; this.Transparency=20 ; Wait(X) ; this.Transparency=30 ; Wait(X) ; this.Transparency=40 ; Wait(X) ; this.Transparency=50 ; Wait(X) ; this.Transparency=60 ; Wait(X) ; this.Transparency=70 ; Wait(X) ; this.Transparency=80 ; Wait(X) ; this.Transparency=90 ; Wait(X) ; this.Transparency=100 ; Wait(X) ; } - Code:
-
Logo.afficher(10) ; _________________ Ce qui est utile à beaucoup l'emporte sur les désirs du petit nombre. ( Spock) |
|
| |
hanakin Cliqueur Amateur
Nombre de messages : 492
Age : 59
Localisation : Angers
Date d'inscription : 12/09/2012
| Sujet: fonction Sam 4 Oct 2014 - 13:08 | |
| Bonjours J'ai bien compris comment creer une fonction pour un objet mais il y aurait-t-il deja un post sur les fonctions ou comment creer une fonction pour un gui , un caractere , ou une fonction simple a rappeler sans parametres suplementaire.
j'ai rechercher (function fonction ) le site m'affiche pas grand chose la dessus
Merci d'avance
_________________ Ce qui est utile à beaucoup l'emporte sur les désirs du petit nombre. ( Spock) |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]fonction Sam 4 Oct 2014 - 13:35 | |
| - hanakin a écrit:
- J'ai bien compris comment creer une fonction pour un objet mais il y aurait-t-il deja un post sur les fonctions ou comment creer une fonction pour un gui , un caractere , ou une fonction simple a rappeler sans parametres suplementaire.
La démarche à suivre pour créer une fonction propre aux personnages, aux interfaces, ... est exactement la même que celle pour les objets. Par exemple on peut regarder la fonction Revolution que j'explique dans ce sujet, qui se trouve dans la liste des tutoriels établie par valoulef (on pourrait aussi regarder la fonction FaceDirection de Billbis dans ce sujet également listé par valoulef, mais sa fonction est un peu plus complexe) : - Code:
-
function Revolution(this Character*) { this.FaceLocation(this.x - 2, this.y); Wait(10); this.FaceLocation(this.x, this.y - 2); Wait(10); this.FaceLocation(this.x + 2, this.y); Wait(10); this.FaceLocation(this.x, this.y + 2); Wait(10); } Cette fonction n'exige aucun paramètre externe, c'est-à-dire qu'elle s'appelle directement sur une instance de personnage (on dit alors que c'est une méthode de la classe Character) et qu'on ne passe aucune valeur entre parenthèses, comme ça : cEgo.Revolution();. La logique sera exactement la même pour les interfaces. Par exemple une fonction qui ne prend pas de paramètre externe et qui permute l'affichage d'une interface : - Code:
-
function Permute(this GUI*) { if (this.Visible) this.Visible = false; else this.Visible = true; } Un exemple de fonction qui prend des coordonnées en paramètres externes et qui déplace progressivement l'interface vers ces coordonnées : - Code:
-
function GlisseVers(this GUI*, int x, int y) { int dx = 1, dy = 1; if (x < this.X) dx = -1; if (y < this.Y) dy = -1; while (this.X != x && this.Y = y) { if (this.X != x) this.X += dx; if (this.Y != y) this.Y += dy; Wait(1); } } _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
hanakin Cliqueur Amateur
Nombre de messages : 492
Age : 59
Localisation : Angers
Date d'inscription : 12/09/2012
| Sujet: fonction Sam 4 Oct 2014 - 14:12 | |
| C'est dingue j'avais finalement bien fait - Code:
-
Header import function EffacerMessage(this Gui*);
- Code:
-
function EffacerMessage(this Gui*) { Wait(80); gStatusline.Visible=false; TextStatusLIne.Text="" ; } Appel de la fonction (Gui:Statusline) - Code:
-
gStatusligne.EffacerMessage();
Mais ça marche pas et j'arrive pas a comprendre pourquoi ??? J'ai surement une boulette quelques parts j'ai essayer differente chose depuis 1/2 heure sans resultats, je seiche.... _________________ Ce qui est utile à beaucoup l'emporte sur les désirs du petit nombre. ( Spock) |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]fonction Sam 4 Oct 2014 - 15:05 | |
| Tu arrives à compiler ce code ? J'imagine que non, puisque tu écris "Gui" avec un 'u' et un 'i' minuscule, et ce terme n'a pas de sens intrinsèque pour AGS. Remplace par GUI et ça devrait tourner. De plus, en l'état le code dans ta fonction EffacerMessage n'utilise jamais this, ce n'est donc pas très utile d'en faire une méthode de la classe GUI : ta fonction concerne Statusline seulement, tu peux donc en faire une fonction générale : - Code:
-
function EffacerMessage() { Wait(80); gStatusline.Visible = false; TextStatusline.Text=""; // J'ai aussi remplacé les L et I majuscules par des l et i minuscules ici } Assure-toi de bien toujours avoir soit "line", soit "Line", soit "ligne", soit "Ligne" dans les noms de tes éléments, parce que là tu alternes (à un endroit tu écris TextStatus LIne et ailleurs tu écris TextStatus ligne) _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
hanakin Cliqueur Amateur
Nombre de messages : 492
Age : 59
Localisation : Angers
Date d'inscription : 12/09/2012
| Sujet: Re: [résolu]fonction Sam 4 Oct 2014 - 17:47 | |
| Non effectivement je n'arrive pas a compiler , meme pas lancer le jeux Mais lorsque que je mets en commentaire: - Code:
-
//gStatusline.EffacerMessage(); le jeux se lance Precision TextStatusLIne est juste le nom du labeltext que j'ai mis dans le Gui Statusline J'ai corriger les u et i de gui en majuscule (ah la synthaxe ) sans resultat donc juste en fonction generale cela devrait donner ça GlobalScript.ash - Code:
-
import function EffacerMessage(); GlobalScript.ash GlobalScript.asc(pour lancer la fonction) - Code:
-
EffacerMessage(); La fonction elle meme - Code:
-
function EffacerMessage() { Wait(80); gStatusline.Visible=false; TextStatusLIne.Text="" ; {
toujours le pb erreur: - Code:
-
GlobalScript.asc(759): Error (line 759): Already referenced name as import; you must define it before using it
la ligne 759 correspond a ça: - Code:
-
function EffacerMessage() {
Apres differents essais je pense que c'est l'appel de fonction EffacerMessage(); qui pose souccis car en commentaire // tout ce passe bien _________________ Ce qui est utile à beaucoup l'emporte sur les désirs du petit nombre. ( Spock)
Dernière édition par hanakin le Dim 5 Oct 2014 - 10:07, édité 1 fois |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]fonction Dim 5 Oct 2014 - 4:05 | |
| - hanakin a écrit:
- GlobalScript.ash (pour lancer la fonction)
- Code:
-
EffacerMessage(); Tu places cette instruction dans l'en-tête (fichier .ash) ? Il ne faut pas faire ça, et comme tu le remarques c'est de là que vient ton problème de compilation. N'utilise cette instruction que là où tu veux vraiment t'en servir (après avoir affiché un message, donc). Si tu veux la lancer dès le début du jeu, alors place-la dans une fonction game_start. _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
hanakin Cliqueur Amateur
Nombre de messages : 492
Age : 59
Localisation : Angers
Date d'inscription : 12/09/2012
| Sujet: re fonction Dim 5 Oct 2014 - 9:54 | |
| Non excuse moi c'est une erreur d'ecriture le EffacerMessage(); est bien dans le globalscript.asc j'ai mal ecrit mon message (tient pour preuve regarde l'erreur est bien dans le globalscript.asc) HE dire que les fonction doivent permettre de moins perdre de temps , j'en perd et j'en fait perdre au autres....
C'est pourtant pas une grosse fonction qui est toute simple en plus , je ne comprend pas...
Je remet une precision lorsque que ma commande est active:EffacerMessage(); GlobalScript.asc(766): Error (line 766): Already referenced name as import; you must define it before using it la 766 c'est function EffacerMessage(); Lorsque qu'elle est ignoré: //EffacerMessage(); Pas d'erreur ?? _________________ Ce qui est utile à beaucoup l'emporte sur les désirs du petit nombre. ( Spock) |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]fonction Dim 5 Oct 2014 - 11:33 | |
| OK, j'ai l'impression que ta ligne EffacerMessage(); est plus haut dans le script que l'endroit où tu définis cette fonction. AGS ne permet pas ce genre de choses : la définition de la fonction doit se trouver plus haut dans le script que toute utilisation de cette fonction. _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
hanakin Cliqueur Amateur
Nombre de messages : 492
Age : 59
Localisation : Angers
Date d'inscription : 12/09/2012
| Sujet: function resolu Dim 5 Oct 2014 - 18:53 | |
| T'avais raison ...
J'ai fait l'inverse la fonction je l'ai mis tout en haut du globalscript et là ça marche ????
Encore mieux j'ai cree un nouveau script. _________________ Ce qui est utile à beaucoup l'emporte sur les désirs du petit nombre. ( Spock) |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]fonction Dim 5 Oct 2014 - 20:08 | |
| - hanakin a écrit:
- Encore mieux j'ai cree un nouveau script.
À ce propos, il faut bien faire attention à l'ordre des scripts. PS : hanakin, j'ai pris la liberté de supprimer ton message "voir plus bas". _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
hanakin Cliqueur Amateur
Nombre de messages : 492
Age : 59
Localisation : Angers
Date d'inscription : 12/09/2012
| Sujet: FONCTION Dim 5 Oct 2014 - 20:19 | |
| TU AS BIEN FAIT POUR LE MESSAGE CAR JE N'AVAIS PAS LA MAIN POUR LE SUPPRIMER Bon eh bien puisque tout marche j'ai fait un export du script que l'on peut trouver icicela permet d'afficher/effacer progressivement un gui ou objet je l'ais mis aussi dans Ressources a telecharger si ça peut servir... _________________ Ce qui est utile à beaucoup l'emporte sur les désirs du petit nombre. ( Spock) |
|
| |
Contenu sponsorisé
| Sujet: Re: [résolu]fonction | |
| |
|
| |
| [résolu]fonction | |
|