AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-26%
Le deal à ne pas rater :
Bosch BBS8214 Aspirateur Balai Multifonction sans fil Unlimited ...
249.99 € 339.99 €
Voir le deal

 

 Gérer différents états

Aller en bas 
+2
Craki
Pixel-boy
6 participants
AuteurMessage
Pixel-boy
Utilisateur confirmé: Rang *
Pixel-boy


Messages : 270

Gérer différents états Empty
MessageSujet: Gérer différents états   Gérer différents états EmptyVen 6 Juil 2012 - 2:23

J'aimerais savoir quelle est la meilleur façon de gérer les différents états d'un objet.
Par exemple imaginons un jeu de plateforme où le personnage peut se déplacer, nager, monter une échelle, chacune de ces actions modifie sa façon de se déplacer ainsi que ses sprites, en ajoutant à ça toutes les autres actions du jeu et les autres "etats" qui influence les actions du personnage, ça devient rapidement difficiles à gérer.

Je cherche donc une méthode efficace pour contourner ce problème, en espérant que vous pourrez m'aider happy1

Revenir en haut Aller en bas
http://leblogtwoplayers.blogspot.fr/
Craki
Utilisateur confirmé: Rang ****
Craki


Messages : 1496
Localisation : Dans l’univers de métamatière

Gérer différents états Empty
MessageSujet: Re: Gérer différents états   Gérer différents états EmptyVen 6 Juil 2012 - 3:53

Je ne sais pas si les énumération (comme en C/C++) existent en GML, mais si c'est le cas, c'est certainement ça.

_________________
Gérer différents états 357g46o
Revenir en haut Aller en bas
Adamo
Utilisateur confirmé: Rang ***
Adamo


Messages : 681
Localisation : Quebec

Gérer différents états Empty
MessageSujet: Re: Gérer différents états   Gérer différents états EmptyVen 6 Juil 2012 - 4:14

les constants dans global game settings sinon au pire tu utilise une string
Revenir en haut Aller en bas
SPLN
Utilisateur confirmé: Rang ***
SPLN


Messages : 588
Localisation : Sur son ordinateur *vous vois* arrêtez de me regarder comme ça
Projet Actuel : En quête de projet(s)!
Mes projets:
SP Lecteur Multimedia (Stand by)
S-Portable Graphics (demo1.8 is out! demo2.0 is planned)
SSB RPG (Stand by)

Gérer différents états Empty
MessageSujet: Re: Gérer différents états   Gérer différents états EmptyVen 6 Juil 2012 - 10:19

Dans un de mes anciens projets j'utilisais une variable locale et des constantes. Puis je faisais un switch (var_statut) case "Nager" : blabla ;break; case "Marcher" : blabla ;break;. Le tout dans l'event step.

_________________
SP Lecteur Multimedia
I am an Gérer différents états Gmq4 in the GM Quiz!
Revenir en haut Aller en bas
http://sp-lecteur-multimedia.skyrock.com/
Pixel-boy
Utilisateur confirmé: Rang *
Pixel-boy


Messages : 270

Gérer différents états Empty
MessageSujet: Re: Gérer différents états   Gérer différents états EmptyVen 6 Juil 2012 - 12:13

Merci à vous, c'est déjà plus ou moins ce que je faisais mais au moins je suis fixé gnii, par contre j'utilisais pas de constantes et ça m'as l'air pas mal.
Revenir en haut Aller en bas
http://leblogtwoplayers.blogspot.fr/
onilink_
Modérateur
onilink_


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

Gérer différents états Empty
MessageSujet: Re: Gérer différents états   Gérer différents états EmptyVen 6 Juil 2012 - 12:20

Perso j'initialise des constantes dans le create de mon objet genre :

MANGER = 1
NAGER = 2
SAUTER = 3
...


Après si tu veut faire plusieurs actions a la fois, tu peut utiliser une seule variable d'état et des opérateurs binaires.

JUMP = 1 // 001
KICK = 2 // 010
SHOOT = 4 // 100
MOVE = 8 // 1000

state = MOVE&JUMP // 1001

Et pour faire les vérifications :
if(state&MOVE) { blabla }
if( state&(MOVE|JUMP) ) { blabla2 }

Pour ajouter une action :
state |= KICK

Pour ajouter plusieurs actions :
state |= KICK|JUMP

Pour changer l'état d'une action (passer de 1 a 0, et de 0 a 1) :
state ^= MOVE

_________________
Gérer différents états Runningpotato1Gérer différents états TvF6GED Gérer différents états MdetltS
Revenir en haut Aller en bas
Pixel-boy
Utilisateur confirmé: Rang *
Pixel-boy


Messages : 270

Gérer différents états Empty
MessageSujet: Re: Gérer différents états   Gérer différents états EmptyVen 6 Juil 2012 - 12:29

Je crois que j'aurais du lire tout ton tuto sur les opérateurs binaires xD
c'est dingue tout ce qu'on peux faire avec des 1 et des 0, en tout cas merci tu m'as encore mâcher le travail gnii
Revenir en haut Aller en bas
http://leblogtwoplayers.blogspot.fr/
onilink_
Modérateur
onilink_


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

Gérer différents états Empty
MessageSujet: Re: Gérer différents états   Gérer différents états EmptyVen 6 Juil 2012 - 14:34

:p

Bah c'est très simple, si tu veux un tuto express je te fait un résumé x)
Tu connais déjà or hein ? (Qui se note aussi ||)
Bah l'opérateur | fonctionne pareil, mais bit a bit.

Donc on a
false||false = false
false||true = true
true||true = true

Bah en binaire :
0|0 = 0
0|1 = 1
1|1 = 1

Et pour le and :
0&0 = 0
0&1 = 0
1&1 = 1

Un nombre converti en binaire s'écrivant en une succession de bits, quand tu fait a|b, tu prend chaque bit de chaque nombre et tu lui fait subir la même opération :
15 & 3 -> 1111 & 0011 = 0011 -> 3
L'opérateur & est un opérateur servant a masquer. Il te permet d'obtenir la valeurs de certains bits a une certaine position.

Pour ce qui est de la priorité des opérateurs, & est le * binaire, et | le + binaire. Donc & a la priorité sur |.
Bref leur utilisation est surpuissante, et ce serais du gâchis de pas les connaitre Smile

_________________
Gérer différents états Runningpotato1Gérer différents états TvF6GED Gérer différents états MdetltS
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Gérer différents états Empty
MessageSujet: Re: Gérer différents états   Gérer différents états EmptyVen 6 Juil 2012 - 15:30

onilink_ et ses bricolages de C++ Gérer différents états 1931472354

Mais j'aime bien le principe de gérer un tableau de booléens via un type plus étendu. Je n'avais pas réalisé que ça permettait de faire des switch sur tout un tableau d'un coup :o

Après dans la plupart des moteurs, le plus simple est de faire quelques booléens : est-on sur le sol ? sur une échelle ? sous l'eau ?
Car si tu utilises le système de constantes, l'ennui est que tu dois définir tous les états croisés (par exemple, sur une échelle ET sous l'eau en même temps) de manière indépendante. Et tu aboutis à des trucs étranges du genre :
Code:
// Donc, si on est sous l'eau... P'tain y'a plein de manières d'être sous l'eau.
if( sousLeau || sousLeauEtEchelle || sousLeauEtAuSol ) {
    // Code
}
else { //euh, attends c'est quoi ce else, c'est si on n'est pas sous l'eau, ni sous l'eau et sur une échelle, ni... houlà.
    // ???
}

// **** it, je fais un second if à la place.
if( auSol || auSolEtEchelle ...

Tandis qu'avec des booléens :
Code:
if( surEchelle ) {
    // Code de déplacement sur une échelle : c'est un moteur à part, bien au chaud dans son bloc if.
    //Il n'utilise pas la gravité, et le perso réagit différemment aux touches que quand il est libre.
    // L'échelle est prioritaire sur les autres éléments de terrain.
} else {
    if( sousLeau ) {
        // De nouveau, un moteur secondaire. Il est prioritaire sur le moteur normal
        // (dans le cas contraire on pourrait courir et sauter au fond de l'eau,
        // ce qui peut être voulu, il suffit de réarranger les conditions), mais n'est considéré
        // que si le perso n'est pas sur une échelle.
    } else {
        // Le moteur normal. Ici, on sait qu'on n'est ni sous l'eau, ni sur une échelle.
        // On utilisera là-dedans le booléen auSol afin de déterminer
        // l'accélération induite par les touches, la possibilité de sauter, etc.
    }
}
La méthode d'onilink_ est en fait la seconde, puisque tu utilises chaque bit de la variable état comme un booléen. Je préfère sa méthode (oui j'aime tripatouiller les opérateurs binaires :p), mais dans beaucoup de cas elle sera overkill.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Pixel-boy
Utilisateur confirmé: Rang *
Pixel-boy


Messages : 270

Gérer différents états Empty
MessageSujet: Re: Gérer différents états   Gérer différents états EmptyVen 6 Juil 2012 - 20:14

Merci pour votre aides je sais pas encore trop quoi choisir mais je vais faire des tests je verrai se qui me semble le plus adapté.
Revenir en haut Aller en bas
http://leblogtwoplayers.blogspot.fr/
Contenu sponsorisé





Gérer différents états Empty
MessageSujet: Re: Gérer différents états   Gérer différents états Empty

Revenir en haut Aller en bas
 
Gérer différents états
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Faire appel à des évênements différents
» Rapidité des differents scrolling
» créer différents processus
» Comment gerer la vitesse d'un son?
» Aide pour différents trucs en GML

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: