[I7] Indexed text

Pour discuter des langages que nous utilisons pour réaliser nos jeux : problèmes, solutions, suggestions...

Modérateurs: Stormi, Otto Grimwald

[I7] Indexed text

Messagepar tvisarl le Dim Mar 25, 2018 3:22 pm

Bonjour,

Avec I7, je veux voir si le texte contenu dans une variable est de la forme "***24", c'est-à-dire trois astérisques suivis par un nombre, et si c'est le cas je veux pouvoir récupérer le nombre ( 24, dans ce cas ) dans une autre variable.

Est-ce possible ?

Merci.
tvisarl
Grand Ancien
 
Messages: 166
Inscription: Sam Juin 18, 2016 9:20 am

Re: [I7] Indexed text

Messagepar Natrium le Dim Mar 25, 2018 11:53 pm

Tout d'abord, si tu utilises 6L38, tu n'as plus à dire « indexed text » mais simplement « text », car Inform passe de l'un à l'autre automatiquement depuis cette version.

Pour répondre à ta question, il faut utiliser une expression régulière.

Code: Tout sélectionner
    if ma-variable exactly matches the regular expression "\*\*\*\d+:
        let T be ma-variable;
        replace the text "***" in T with "";
        say "[T].";

Je n'ai pas testé et je ne garantis pas la validité de mon expression régulière, mais ça devrait être ça.

Par contre, ce que tu récupère est un texte contenant ton nombre, pas un vrai nombre. Par défaut, on ne peut pas convertir un texte en nombre, on en avait déjà parlé.

Mais il y a aussi une autre façon que celle décrite dans le lien, c'est justement d'utiliser une snippet, mais ça tient un peu du hack. Il faut ajouter cela après le code ci-dessus :

Code: Tout sélectionner
        let former player's command be "[player's command]";
        let N be a number;
        change the text of the player's command to T.
        if the player's command matches "[number]": [On sait que c'est le cas, mais c'est juste pour récupérer le nombre.]
            now N is the number understood;
        change the text of the player's command to former player's command;

On sauvegarde la commande du joueur, on la remplace par notre texte qui contient le nombre, et on utilise le parser pour l'analyser et obtenir le nombre. À la fin, on remet l'ancienne commande, au cas où. Le défaut, c'est que ça change le number understood. Donc si cette règle se passe lors d'une action s'appliquant à un nombre, on perd le nombre que le joueur a tapé, ce qui peut causer des bugs s'il est utilisé plus tard. Dans la majorité des cas, ça ne devrait pas poser problème, je pense.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1165
Inscription: Mar Oct 04, 2011 11:18 pm

Re: [I7] Indexed text

Messagepar tvisarl le Mer Mar 28, 2018 1:16 pm

Merci. :D
tvisarl
Grand Ancien
 
Messages: 166
Inscription: Sam Juin 18, 2016 9:20 am


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron