Forums - La Blocothèque - Compter les flags

  • Anonyme  | Posté le 8 septembre 2019 à 17 h 02 min

    Bonjour,
    Le contexte est l’exploration d’une pièce avec divers objets à trouver.
    Une fois tous les objets trouvés, le joueur peut quitter la pièce.
    Je voudrais l’informer à chaque découverte d’objet le nombre d’objets restants.
    Pour cela, je pense devoir utiliser countflag.
    Comment l’utiliser ?
    Bien cordialement et merci encore pour votre travail
    Jean-pierre

    Yannick Audéoud  | Posté le 9 septembre 2019 à 12 h 00 min

    Bonjour,

    La fonction countFlags permet de compter le nombre de flags true parmi un ensemble de flags données en paramètres de cette fonction. Par exemple, countFlags(objet1, objet2, objet3, objet4) donnera la valeur 2 si le joueur a ramassé 2 objets parmi les 4 objets testés.

    Je ne pense pas que ce soit la solution le plus adaptée dans votre cas.

    Je vous propose plutôt d’avoir une variable nbObjetsRestants (lire « nombre d’objets restants ») que vous initialisez à N (avec N le nombre d’objets à trouver en tout dans la pièce) au démarrage de votre scénario.

    A chaque fois que le joueur trouve un objet, diminuez de 1 cette variable, en faisant nbObjetsRestants ? nbObjetsRestants - 1 dans un bloc Variables :

    variables

    Vous pourrez ainsi afficher la variable nbObjectsRestants au joueur, par exemple dans un bloc Message :

    message

    Bien cordialement,
    Yannick

    Anonyme  | Posté le 9 septembre 2019 à 14 h 07 min

    Merci Yannick, je teste cela rapidement

    Anonyme  | Posté le 10 septembre 2019 à 14 h 17 min

    Bonjour,
    Je viens de tester votre proposition et cela marche à merveille. Merci. Cela dit, j’ai un autre souci… Comment faire pour qu’un objet trouvé ne puisse plus être cliquable une fois que l’on a déjà cliqué dessus. Les autres devant bien sûr rester cliquables. Pour l’instant, si je clique plusieurs fois sur le même objet, il est comptabilisé à chaque fois.

    Merci pour votre aide,
    Bien cordialement,
    PS : J’ai fait une zone cliquable avec tous les objets sur laquelle je reviens après chaque clic.

    Yannick Audéoud  | Posté le 10 septembre 2019 à 15 h 12 min

    Bonjour,

    Ravi que la solution ait fonctionné !

    Pour votre nouvelle question, le plus simple est d’utiliser la « Condition de visibilité » de chacune des zones qui représentent vos objets.

    Pour savoir quel objet a déjà été trouvé ou non, vous pouvez placer des blocs Flag à la suite de vos zones, de la manière suivante :

    visible si

    Ensuite, dans votre bloc Zones Cliquables, modifiez de la manière suivante le champ « Visible si » dans les propriété avancées de la zone. Pour avoir accès à ces options, votre bloc Zones Cliquables doit être configuré en mode « Expert » en haut à droite de la fenêtre des paramètres.

    graph

    Ici, j’ai sélectionné la zone « Objet1 », dont le nom n’a rien à voir avec le flag objet1, la zone pourrait très bien s’appeler autrement. J’ai ensuite défini le champ « Visible si » de cette zone à !objet1. Le point d’exclamation devant objet1 est une négation de ce qui suit. !objet1 se traduit donc par « Si le flag objet1 est désactivé ».

    Si on récapitule :
    – Nous avons créé un flag objet1 signifiant « L’objet 1 a déjà été ramassé »
    – La zone cliquable de cet objet est « Visible si » !objet1
    – Donc : la zone de l’objet 1 n’est visible et cliquable que si l’objet 1 n’a pas déjà été ramassé.

    En espérant avoir été suffisamment clair !
    N’hésitez pas si vous avez besoin de plus de détails.

    Bien cordialement,
    Yannick