[I7] Duplications

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

Modérateurs: Stormi, Otto Grimwald

[I7] Duplications

Messagepar Grelot-de-Bois le Lun Avr 26, 2010 4:38 am

Hello again !

Je cherche le moyen de placer plusieurs objets identiques dans une même pièce, et de pouvoir les empiler dans l'inventaire, voire en prendre plusieurs à la fois.

En cherchant dans le manuel d'Inform, j'ai trouvé ceci :

4.4. Duplicates


Although it is only useful to a limited extent, we can make any number of copies of something:


  • "Polygons"

  • A shape is a kind of thing. A square is a kind of shape. A triangle is a kind of shape.

  • The Geometry Lab is a room. In the Geometry Lab are three triangles and two squares.


The description "three triangles" makes three identical things, each of the kind "triangle", and similarly for the squares. When the above is compiled, the player can type TAKE TWO TRIANGLES or TAKE ALL THE TRIANGLES and so forth. (The player has to type numbers as words when counting things here: so TAKE SIX TRIANGLES makes sense to Inform but TAKE 6 TRIANGLES doesn't, largely for traditional reasons.)


Three caveats. Firstly, a counted-out description like "two squares" is only allowed if it combines a number with the name of a kind which is already known (perhaps modified with adjectives, so "two open doors" is fine). If we say:


  • Two circles are in the Lab.


without having defined "circle" as a kind in advance, then only a single object will be created - whose name is "two circles". (This is because many natural names start with numbers: "six of clubs", for instance, referring to a single playing card, or "12 Hollywood Close" meaning a single house. We wouldn't want such names to be misinterpreted.)


The second caveat is that excessive duplication is expensive in memory and running time. It is perfectly legal to say


  • In the Lab are 75 triangles.


but the resulting game may be a little sluggish: and Inform draws the line at 100, refusing to create more duplicates than that in any single place. If we really need more than about fifty duplicated objects - say, a tombola containing raffle tickets numbered 1 to 1000 - it is usually better to find some less literal way to simulate this: for instance, only having a single raffle ticket, but with a randomly chosen number on it.


If there are very many items in the same place, commands like TAKE ALL and DROP ALL may mysteriously not quite deal with all of them - this is because the parser, the run-time program which deciphers typed commands, has only limited memory to hold the possibilities. It can be raised with a use option like so:


  • Use maximum things understood at once of 200.


(The default is, as above, 100.)


Finally: numbers up to twelve may be written out in words in the source text, but larger ones must be written as numerals. So "twelve" or "12", but "13" only.



Chouette, me dis-je ! C'est parfait, ou presque ! (Ça ne permet pas de mettre une infinité d'objets, par exemple on ne peut pas prendre plus de 100 grains de sable... enfin, j'vais pas chipoter !)

Oui mais voilà : en testant, j'ai remarqué que cela ne fonctionne pas, pour une raison qui m'est inconnue. Pour vérifier, j'ai même été jusqu'à intégralement copier leur exemple :

Code: Tout sélectionner
A shape is a kind of thing. A square is a kind of shape. A triangle is a kind of shape.
The Geometry Lab is a room. In the Geometry Lab are three triangles and two squares.


Eh bien, cela ne fonctionne pas... je ne peux prendre ni un triangle, ni trois, ni même 25 en en plaçant 75 dans le code... en chiffres ou en lettres, en anglais ou en français, rien à faire : Vous ne voyez rien de tel, à moins que cela ne soit sans grande importance.

Quelqu'un a une solution ?
Grelot-de-Bois
Sorcier du culte
 
Messages: 14
Inscription: Sam Avr 24, 2010 9:30 pm

Re: [I7] Duplications

Messagepar Otto Grimwald le Lun Avr 26, 2010 7:44 am

J'arrive à prendre ces objets si je tape la commande en français (en étant dans un jeu français), mais pas en anglais, ni avec les chiffres, ce qui est plus embêtant.

Dans la version anglaise, il y a des bogues on dirait, par exemple si je crée 51 objets, je peux en prendre 27 (twenty-seven), mais pas 50 (fifty)

Peut-être qu'Inform 7 devrait pouvoir gérer les nombres avec des chiffres pour éviter certaines frustrations. Mais la nouvelle version sort dans 2 jours normalement, on verra si cela a été modifié / amélioré.

Sinon il faudra faire un rapport de bogue sur le site.

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3031
Inscription: Mar Aoû 24, 2004 12:02 pm

Re: [I7] Duplications

Messagepar Grelot-de-Bois le Lun Avr 26, 2010 8:32 am

Hm, étrange, car chez moi "Prendre deux triangles" ne fonctionne pas plus que "Take two triangles"... et j'ai moi aussi la langue française activée. Enfin, c'est peut-être juste un bug passager, je réessaierai !
Grelot-de-Bois
Sorcier du culte
 
Messages: 14
Inscription: Sam Avr 24, 2010 9:30 pm

Re: [I7] Duplications

Messagepar Otto Grimwald le Lun Avr 26, 2010 11:14 am

essaye avec un nouveau projet, peut-être y a t il autre chose dans ton jeu qui peut perturber le fonctionnement ?

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3031
Inscription: Mar Aoû 24, 2004 12:02 pm


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

cron