Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
-28%
Le deal à ne pas rater :
Brandt LVE127J – Lave-vaisselle encastrable 12 couverts – L60cm
279.99 € 390.99 €
Voir le deal

 

 [Résolu <3] Action sur Tous/N'importe quel/Certains personnages

Aller en bas 
3 participants
AuteurMessage
Pierrec
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
Pierrec


Nombre de messages : 99

Date d'inscription : 16/06/2011


[Résolu <3] Action sur Tous/N'importe quel/Certains personnages Empty
MessageSujet: [Résolu <3] Action sur Tous/N'importe quel/Certains personnages   [Résolu <3] Action sur Tous/N'importe quel/Certains personnages EmptyDim 16 Mar 2014 - 12:17

Bonjour, je reviens avec une autre question peut-être délicate (j'espère que non).

Je dois gérer dans mon jeu un grand nombre de personnages (24) qui, disons, accompagnent ou non le joueur. Je suis donc souvent amené à les changer de room en groupe, à checker leurs status etc...Cela donne à chaque fois des paquets de 24 commandes (ou plus)

Je souhaites donc savoir s'il existait une astuce pour effectuer des commandes sur tout ou partie des personnages

exemple de choses que j'aimerais faire :

- Si le x de n'importe quel perso est égal à 30, faire ceci
- Tous les personnages en Room 1 vont en Room2
- Combien ai-je de personnages en Room3

Je peux evidement mettre mes gros paquets de commandes dans des fonctions individuelles, mais j'ai tellement de type de requêtes différentes que ça ne simplifierait pas tant les choses.


Dernière édition par Pierrec le Dim 16 Mar 2014 - 13:17, édité 1 fois
Revenir en haut Aller en bas
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


[Résolu <3] Action sur Tous/N'importe quel/Certains personnages Empty
MessageSujet: Re: [Résolu <3] Action sur Tous/N'importe quel/Certains personnages   [Résolu <3] Action sur Tous/N'importe quel/Certains personnages EmptyDim 16 Mar 2014 - 12:56

Pierrec a écrit:
Je souhaites donc savoir s'il existait une astuce pour effectuer des commandes sur tout ou partie des personnages
Un des problèmes du langage d'AGS, c'est qu'on ne peut pas passer de pointeurs vers des fonctions, et donc on ne peut pas créer des commandes qui prendraient n'importe quelle fonction comme argument pour l'appliquer, par exemple, à l'ensemble des personnages. Au contraire ce serait quelque chose de très facile à faire en javascript (bien que la logique y soit un peu différente).
Cela-dit je peux répondre à tes trois exemples.

Pierrec a écrit:
- Tous les personnages en Room 1 vont en Room2
Code:
// On va parcourir tous les personnages du jeu
int i = 0;
while (i < Game.CharacterCount) {
  character[i].ChangeRoom(3); // On transporte le i-ème perso en pièce 3
  i++;
}
Pierrec a écrit:
- Combien ai-je de personnages en Room3
Code:
// On va parcourir tous les personnages du jeu
int i = 0, n = 0;
while (i < Game.CharacterCount) {
  // Si le i-ème personnage est en pièce 3, on augmente n
  if (character[i].Room == 3) n++;
  i++;
}
// Maintenant, n est égal au nombre de personnages en pièce 3
Pierrec a écrit:
- Si le x de n'importe quel perso est égal à 30, faire ceci
Code:
// On part de la supposition qu'aucun n'est à 30 ("false")
bool unegala30 = false;
// On parcourt tous les personnages du jeu
int i = 0;
while (i < Game.CharacterCount) {
  // Si le i-ème personnage est à 30, on révise notre supposition > "true"
  if (character[i].x == 30) unegala30 = true;
  i++;
}
// Si unegala30 vaut "true", c'est qu'on a révisé notre supposition,
// ie. au moins un personnage est à 30
if (unegala30) {
  // faire ceci
}
Je te mets aussi "si le x de TOUS LES perso est égal à 30" :
Code:
// On part de la supposition que tous les personnages sont à 30 ("true")
bool tousegauxa30 = true;
// On parcourt tous les personnages du jeu
int i = 0;
while (i < Game.CharacterCount) {
  // Si le i-ème personnage n'est pas à 30, on révise notre supposition > "false"
  if (character[i].x != 30) tousegauxa30 = false;
  i++;
}
// Si tousegauxa30 vaut "true", c'est qu'on n'a pas révisé notre supposition,
// ie. tous les personnages sont à 30
if (tousegauxa30) {
  // faire ceci
}
J'imagine que tu comprends l'idée de la boucle pour parcourir tous les personnages.
Après quand tu fais des vérifications, il faut bien se figurer la logique des quantifieurs : "tous" ou "au moins un". Notre boucle va vérifier les personnages individuellement successivement, et donc il faut que tu réfléchisses comme ça "il suffit qu'au moins un personnage remplisse telle condition pour que la supposition soit vérifiée/invalidée". À partir de là, tu sais si tu dois commencer à "true" ou à "false".
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Pierrec
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
Pierrec


Nombre de messages : 99

Date d'inscription : 16/06/2011


[Résolu <3] Action sur Tous/N'importe quel/Certains personnages Empty
MessageSujet: Re: [Résolu <3] Action sur Tous/N'importe quel/Certains personnages   [Résolu <3] Action sur Tous/N'importe quel/Certains personnages EmptyDim 16 Mar 2014 - 13:16

Tu commences ta réponse en me disant qu'on ne peut pas, puis tu me donnes exactement ce que je recherchais!  chou 

Merci pour tes explications très claires : j'ai tout compris! Et tu m'ouvres de nouveaux horizons sur AGS.


-Je ne savais même pas qu'on pouvait faire des "character[i]" ! Rien qu'avec cette simple information, j'aurais pu commencer à creuser! C'est presque ce que je demandais en fait!


-Je n'avais jamais compris comment While s'utilisait, et maintenant c'est très clair.


-Et je ne savais pas non plus qu'on pouvait augmenter une variable avec ++, jusqu'à présent je faisais un laborieux i=i+1;
ça marche avec i-- aussi ? et on peut faire i+++ pour +2?


Merci mille fois! C'est parfait! Je suis paré maintenant!
Revenir en haut Aller en bas
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


[Résolu <3] Action sur Tous/N'importe quel/Certains personnages Empty
MessageSujet: Re: [Résolu <3] Action sur Tous/N'importe quel/Certains personnages   [Résolu <3] Action sur Tous/N'importe quel/Certains personnages EmptyDim 16 Mar 2014 - 13:28

Pierrec a écrit:
Tu commences ta réponse en me disant qu'on ne peut pas, puis tu me donnes exactement ce que je recherchais!  chou 
En fait je voulais dire qu'on ne peut pas créer de commande du genre Character.AreAll(this.Room == 3);, Character.IsOne(this.x == 30) ou encore Character.DoForAll(this.ChangeRoom(3));

Pierrec a écrit:
ça marche avec i-- aussi ? et on peut faire i+++ pour +2?
Oui, ça marche avec i--, mais pas avec i+++ (ni i--- évidemment). Tu peux faire i += 2; en revanche.
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Pierrec
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
Pierrec


Nombre de messages : 99

Date d'inscription : 16/06/2011


[Résolu <3] Action sur Tous/N'importe quel/Certains personnages Empty
MessageSujet: Re: [Résolu <3] Action sur Tous/N'importe quel/Certains personnages   [Résolu <3] Action sur Tous/N'importe quel/Certains personnages EmptyDim 16 Mar 2014 - 13:31

Citation :
En fait je voulais dire qu'on ne peut pas créer de commande du genre Character.AreAll(this.Room == 3);, Character.IsOne(this.x == 30) ou encore Character.DoForAll(this.ChangeRoom(3));

Peu importe langue! Tu as déjà résolu tous mes problèmes bien au delà de mes espérances. Je suis en train de réécrire tout mon code avec ces whiles, il va fondre comme neige au soleil!
Revenir en haut Aller en bas
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Billbis


Nombre de messages : 1346

Date d'inscription : 10/05/2012


[Résolu <3] Action sur Tous/N'importe quel/Certains personnages Empty
MessageSujet: Re: [Résolu <3] Action sur Tous/N'importe quel/Certains personnages   [Résolu <3] Action sur Tous/N'importe quel/Certains personnages EmptyDim 16 Mar 2014 - 13:58

Didonc, pierrec, tu as la mémoire courte. ^^
Revenir en haut Aller en bas
http://nothingaboutthedog.blogspot.fr/
Pierrec
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
Pierrec


Nombre de messages : 99

Date d'inscription : 16/06/2011


[Résolu <3] Action sur Tous/N'importe quel/Certains personnages Empty
MessageSujet: Re: [Résolu <3] Action sur Tous/N'importe quel/Certains personnages   [Résolu <3] Action sur Tous/N'importe quel/Certains personnages EmptyDim 16 Mar 2014 - 16:42

rougit rho la honte

En fait j'avais du un peu tout copier-coller vos extraits de code sans trop comprendre ce que je faisais. Maintenant j'ai compris langue Faut juste m'expliquer longtemps et à plusieurs reprises

(Bon là dernière fois aussi j'ai dit que j'avais compris mais j'avais un peu menti, là non ^^)

Revenir en haut Aller en bas
Contenu sponsorisé





[Résolu <3] Action sur Tous/N'importe quel/Certains personnages Empty
MessageSujet: Re: [Résolu <3] Action sur Tous/N'importe quel/Certains personnages   [Résolu <3] Action sur Tous/N'importe quel/Certains personnages Empty

Revenir en haut Aller en bas
 
[Résolu <3] Action sur Tous/N'importe quel/Certains personnages
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Bug , certains dDialogues ne fonctionnent plus [Résolu, mais très utile à lire ]
» une action pas si simple [Résolu]
» [résolu]Taille des personnages
» [résolu] Jeu à plusieurs personnages : quid ? :)
» [Résolu] Déclencher une action qui active un hotspot

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Questions / Réponses-
Sauter vers: