French Inform Library Objects

From IFWiki

Bibliothèque d'objets pour Inform

Couteau

Object   Couteau "couteau" Cuisine
   with  description "Un banal couteau de cuisine.",
	 name 'couteau' 'de' 'cuisine',
	before [;
            Actionner:  if (noun == Pain) {print "Vous coupez du pain avec ce couteau.^"; rtrue;} else rfalse;
        ],
	after [;
            Drop: print "De toute façon il ne vaut pas grand chose.";
        ],
	has ;

Orange

Object   Orange "orange" Piece_banale
   with  description "Une orange.",
         name 'orange' 'agrume',
        before [;
            Drop: print "Vous laissez l'orange."; rtrue;
            Eat: print "Elle a bon goût, même si c'est un peu acide."; rtrue;
        ],
        has female edible;

Enveloppe

Object Enveloppe "enveloppe" 
   with  description "Au dos se trouve l'adresse de votre correspondant.",
	article "une", 
	name 'enveloppe',
	before [;
            Lire: print_ret (bp_U) "^Votre nom figure sur le devant.";
 Receive:
 if (noun == Lettre)
{print ""; return false ;}
else
"Cela ne va pas, cela ne se fait pas de mettre ", (the) noun, " dans l'enveloppe."; 
        ], 
	has container openable female open;

Lettre

Papier Lettre "lettre" Tiroir
   with  description "Une lettre d'un ami.",
	name 'lettre',
	before [;
            Lire: "Votre nom est marqué dessus puisque vous en êtes le destinataire.";
 
        ], 
	has  female;

Un Téléphone qui fonctionne

d'abord, la fonction qui permet de déterminer le numéro de téléphone (à ne pas changer, à mettre où vous voulez dans votre code)

Array dialled_number -> MAX_PHONE_LENGTH + 1;
[ PhoneNumber at length dialled dialled_already i;
 do {
   if (wn > num_words) jump number_ended;
   at = WordAddress(wn); length = WordLength(wn);
   for (i=0: i<length: i++) {
       switch (at->i) {
           '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
               if (dialled < MAX_PHONE_LENGTH)
                   dialled_number -> (++dialled) = at->i - '0';
           '-': ;
           default: jump number_ended;
       }
   }
   wn++;
   dialled_already = dialled;
 } until (false);
 .number_ended;
 if (dialled_already == 0) return GPR_FAIL;
 dialled_number->0 = dialled_already;
 return GPR_PREPOSITION;
];

Ensuite l'objet téléphone en lui même :

 Object telephone "telephone" bureau
        with name 'telephone' 'combine',
             description "Partez loin, au bout du monde, ils seront déjà
là, à vous attendre, pour vous harceler. Ils vous ont déjà conquis.
Ils s'appellent...les téléphones. ",
             before [;Take : if (noun==telephone) {print "Si je veux
utiliser le
téléphone, je n'ai qu'à taper ~composer~ suivi du numéro. ";return
2;}],
             phoned 0,
      has static;

Ensuite la fonction "Composer" qui vous permet d'appeler un numéro (dans notre exemple, on prend le 36 99 pour l'horloge parlante)

[ComposerSub;
if (telephone in location) {
if (
dialled_number->1==3
&&
dialled_number->2==6
&&
dialled_number->3==9
&&
dialled_number->4==9
) {print "L'horloge parlante vous dit l'heure";}
else {print "Bah, je n'ai pas envie d'appeler ce numéro";}
}
else {print "^Ouaip, je donnerais bien un petit coup de fil, mais il n'y a
pas de téléphone ici.^";
}
];

Et enfin, le verbe composer à ajouter à votre grammaire :

Verb 'composer' 'appeler'
*  PhoneNumber                  ->Composer
* 'le' PhoneNumber              ->Composer;