Bonjour
Comment définir un nombre illimité d’objet dans un endroit, par exemple un champ de carottes.
A chaque fois que le joueur prendre une carotte elle s’incrémente dans son inventaire, mais reste aussi visible sur l’endroit.
Merci
Bonjour
Comment définir un nombre illimité d’objet dans un endroit, par exemple un champ de carottes.
A chaque fois que le joueur prendre une carotte elle s’incrémente dans son inventaire, mais reste aussi visible sur l’endroit.
Merci
Pour avoir un nombre " infini " d’objets, tu dois utiliser l’extension Dynamic Objets
inform7.com/extensions/Jesse%20M … index.html
Ensuite tu crées un backdrop appelé " champ de carottes ", ou ce que tu veux, et à chaque fois que le joueur tapera " prendre une carotte " (il faudra magouiller un peu aussi pour que ça fonctionne, avec un After reading a command :
if the player's command matches "prendre une carotte"
begin ;
blabla
… par exemple), tu feras apparaître, ex nihilo, une nouvelle carotte. Je n’ai jamais utilisé cette extension, je ne peux donc pas t’en dire plus sur son fonctionnement
Bonjour
J’ai essayé avec le code suivant qui permet de définir un nombre d’objet.
Ce code fonctionne bien par contre, dans mes description de scéne j’intègre la description des objets.
Donc pour ne pas faire apparaître un objet je le défini avec la propriété " Undescribed". Seul problème, le code utilisé avec la propriété Undescribed ne gère plus correctement les quantités!
Si quelque sait pourquoi …
x carotte
Idéales en soupe ou en purée (Pour celui qui aime les carottes).
x carottes
[Vous ne pouvez pas utiliser plusieurs objets avec ce verbe.]
prendre carotte
Voilà qui est fait.
prendre carottes
Vous l’avez déjà.
The plural of carotte is carottes. A carotte (f) is a kind of thing. A carotte is always edible. Ten carottes are in the jardin.
The description of the carotte is "Idéales en soupe ou en purée (Pour celui qui aime les carottes).". Understand "carottes", "carotte" as the carotte. The printed name of the carotte is "carotte".
Le même code avec la propriété Undescribed :
The plural of carotte is carottes. A carotte (f) is a kind of thing. A carotte is undescribed. A carotte is always edible. Ten carottes are in the jardin.
The description of the carotte is "Idéales en soupe ou en purée (Pour celui qui aime les carottes).". Understand "carottes", "carotte" as the carotte. The printed name of the carotte is "carotte".
Undescribed
J’éviterais d’utiliser l’extension que StephaneF a mentionné, car elle est assez difficile à utiliser et il est souvent possible de faire sans. Aussi, pas besoin de l’after reading a command, puisqu’il suffit de rediriger « prendre carotte » vers le champ. En plus, avec l’after reading a command, il faudrait prendre en compte toutes les commandes possibles qui puisse mener à la prise d’une carotte, alors autant laisser le parser s’en charger pour nous.
Donc, pour répondre à ta question initiale, le mieux est de créer un nombre fixe de carottes hors du jeu, et de les donner au joueur quand il prend le champ. Il faudra bloquer l’action s’il n’y a plus de carottes en réserve.
[code][On crée des carottes hors-jeu. Augmenter le nombre de carotte si ce n’est pas suffisant.]
A carrote is a kind of thing. There are 10 carottes.
The champ is a room.
[L’objet qui simule la source inépuisable de carottes.]
Some carrot-supply are a thing in le champ. The printed name is « carottes »
Understand « carotte » as the carrot-supply.
[Si on prend la source, on apporte une nouvelle carotte à la place.]
Instead of taking the carrot-supply:
if a carotte (called C) is off-stage:
now the player carries C;
say « Voilà qui est fait. »;
else:
say « Vous avez déjà pris beaucoup de carottes. ».[/code]
Avec ça, il peut y avoir un problème si le joueur tape « prendre carotte » et qu’il en possède déjà, car ça peut ne pas être redirigé vers le champ, mais ça peut se résoudre facilement si c’est le cas. Aussi, s’il est possible d’égarer des carottes, il faut finir par les enlever du jeu si on ne veut pas que le joueur soit obligé d’aller les retrouver (car il ne pourra plus en prendre de nouvelles puisqu’il a épuisé son quota).
Tout ça est tiré de l’exemple Pizza Prince (section 18;34).
Pour répondre à ta seconde question avec le undescribed, c’est parce qu’un objet ayant cette propriété est considéré comme caché. Quand le joueur prend pour la première fois des carottes, le jeu assume que le joueur sait qu’elles sont là car il l’a mentionné dans sa commande. Mais après cela, le jeu préfère choisir celles qui sont possédées par le joueur car les autres sont toujours considérées comme cachées. (J’espère que c’est assez clair.) Pour mentionner un objet, il faut les déclarer comme scenery, mais on ne pourrait dans ce cas plus les prendre. Une autre solution serait d’utiliser une certaine activité, mais je ne sais plus laquelle et je n’ai pas le temps de vérifier tout de suite.
Mais si tu adoptes le code plus haut, alors tu n’aura plus besoin d’undescribed, je pense.