AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Appeller une variable globale

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
LVH
Nouveau


Messages : 7

MessageSujet: Appeller une variable globale   Dim 29 Jan 2012 - 10:17

Bonjour tout le monde !

Bon, ben je me lance pour ma première question sur ce forum.
J'ai un soucis avec les variables globales... "regarde sur le forum", "google est ton ami" pourrait-on me dire.
Sauf que j'ai déjà cherché... sans trop de succès !

Mon soucis est le suivant :
J'ai créé un script qui recense les caractéristiques des unités du jeu. Sachant que je vais devoir réutiliser ces statistiques pour chaque unité, pour chaque collision, j'ai préféré les déclarer en global. Comme ça, il me suffit de les modifier dans le script où elles sont déclarées plutôt que de le faire X fois dans X objets différents. C'est destiné à me faciliter la vie pour les tests.

En gros, mon script ressemblerait à peu près à ceci (basique, pour le moment) :
Code:
//Unité 1
global.unite1_vie = 15;
global.unite1_attaque = 10;
global.unite1_vitesse = 4;
global.unite1_sens = 0; //droite
global.unite1_prix = 10;

//Unité 2
...

Mon but était d'éviter ceci :
Code:
self.vie = self.vie - 10;
Pour le remplacer par ceci :
Code:
self.vie = self.vie - unite1_attaque;
Principalement pour simplifier les modifications lors des phases de test. Il est plus simple de modifier une valeur dans un code plutôt que vingt fois la même valeur dans vingt codes différents...

Mais, pour en venir au problème, au moment où je lance le jeu, un message d'erreur apparaît me disant que la variable "unite1_attaque" est introuvable...
J'ai essayé plusieurs solutions trouvées sur internet, notamment mettre "global." devant, mettre "nom_objet_portant_le_script." devant, et d'autres choses, mais rien n'a fonctionné, je ne parviens pas à appeler la variable globale que je souhaite.

J'ai sûrement mal compris le principe de l'utilisation de ce type de variables.

Est-ce que quelqu'un pourrait m'éclairer sur la démarche à suivre ?
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8904
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Appeller une variable globale   Dim 29 Jan 2012 - 10:38

Le mieux quand t'utilise des globales, c'est de tout déclarer dans le code de départ de ta première room (vide tant qu'a faire).
Au moins pas de mauvaises surprises :p

Du genre
Code:
global.aa = 1
global.bb = 2
room_goto_next()

Sinon, pour ce que tu veux faire, je pense que les global sont inappropriées (en fait les global c'est toujours a éviter).
Si j'ai bien compris ce que tu veux faire, utilise des constantes a la place.

_________________
                 
Revenir en haut Aller en bas
LVH
Nouveau


Messages : 7

MessageSujet: Re: Appeller une variable globale   Dim 29 Jan 2012 - 10:40

onilink_ a écrit:
Le mieux quand t'utilise des globales, c'est de tout déclarer dans le code de départ de ta première room (vide tant qu'a faire).
Au moins pas de mauvaises surprises :p

Du genre
Code:
global.aa = 1
global.bb = 2
room_goto_next()

Sinon, pour ce que tu veux faire, je pense que les global sont inappropriées (en fait les global c'est toujours a éviter).
Si j'ai bien compris ce que tu veux faire, utilise des constantes a la place.

Mais que je suis boulet !
Pourquoi est-ce que je n'y ai pas pensé avant...
Tu as tout à fait raison, les constantes, c'est bien plus efficace dans ce cas !
Merci bien pour ton aide !

Simple question de curiosité : pourquoi les variables globales sont-elles à éviter ?


EDIT : Hum.. le menu "define constante" n'est accessible que dans la version payante... mais je suppose qu'il est possible de les déclarer en GML ?
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
avatar

Messages : 1279
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

MessageSujet: Re: Appeller une variable globale   Dim 29 Jan 2012 - 10:48

Tu peut faire un truc du genre :

Code:
globalvar constant;
constant = object_add();

constant.aa = 1;
constant.bb = 2;
room_goto_next();
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8904
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Appeller une variable globale   Dim 29 Jan 2012 - 10:51

LVH a écrit:
EDIT : Hum.. le menu "define constante" n'est accessible que dans la version payante... mais je suppose qu'il est possible de les déclarer en GML ?
gha
Ils abusent quand même la...

_________________
                 
Revenir en haut Aller en bas
LVH
Nouveau


Messages : 7

MessageSujet: Re: Appeller une variable globale   Dim 29 Jan 2012 - 12:44

onilink_ a écrit:
LVH a écrit:
EDIT : Hum.. le menu "define constante" n'est accessible que dans la version payante... mais je suppose qu'il est possible de les déclarer en GML ?
gha
Ils abusent quand même la...

Oui, surtout que je viens de voir que la fonction "object_add()" est également exclue de la version lite :
Citation :

___________________________________________
EXECUTION ERROR in creation code of room room0
Error in code at line 2:
constant = object_add();
^
at position 13: This function is not available in the Lite Edition.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8904
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Appeller une variable globale   Dim 29 Jan 2012 - 13:23

Dans ce cas j'aurais crée un petit script qui simule les constantes.
Par exemple :

constantes()
Code:
VIE_MAX = 100
VITESSE = 12
[...]

et ensuite dans ton objet t'as qu'a appeler ta fonction :

#Create
Code:
constantes()

_________________
                 
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
avatar

Messages : 1279
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

MessageSujet: Re: Appeller une variable globale   Dim 29 Jan 2012 - 13:33

Je crois que les scripts ne sont pas dispos aussi de souvenir.
Revenir en haut Aller en bas
LVH
Nouveau


Messages : 7

MessageSujet: Re: Appeller une variable globale   Dim 29 Jan 2012 - 14:43

onilink_ a écrit:
Dans ce cas j'aurais crée un petit script qui simule les constantes.
Par exemple :

constantes()
Code:
VIE_MAX = 100
VITESSE = 12
[...]

et ensuite dans ton objet t'as qu'a appeler ta fonction :

#Create
Code:
constantes()

Toujours le même problème, il refuse de me reconnaître ce que j'ai créé... ou alors je m'y prend comme un pied !
Je me demande si je ne me suis pas lancé dans un projet un peu trop compliqué pour le moment...
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8904
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Appeller une variable globale   Dim 29 Jan 2012 - 14:45

Bizarre.
Tu voudrais pas m'envoyer ton gmk que j'y jette un œil ?

_________________
                 
Revenir en haut Aller en bas
LVH
Nouveau


Messages : 7

MessageSujet: Re: Appeller une variable globale   Mer 1 Fév 2012 - 16:28

Désolé pour le retard de ma réponse, je n'ai que très peu de temps en dehors des week-ends...
J'ai un peu massacré mon GMK, donc je n'aurai pas grand-chose à te montrer.

Après réflexion, et après en avoir discuté avec mon prof de programmation, il m'a conseillé de faire mon jeu en VB.net pour diverses raisons :
- c'est un des langages que l'on étudie, ça ne pourra me faire qu'un bon entraînement
- Visual Studio convient parfaitement pour ce que je souhaite faire
- si mon jeu est bien ficelé, je pourrai le faire compter dans les compétences acquises pour l'examen de fin d'année

Donc je pense que je vais plutôt essayer de le faire en VB.
Merci quand même pour votre aide !
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Appeller une variable globale   

Revenir en haut Aller en bas
 
Appeller une variable globale
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» je ne pensais pas que c'était aussi pire...
» Modernisation des CMT
» Dilution LA special regurgitations
» L'Hypertension Artérielle
» besoin de conseil pour un contrat particulier

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: