Informar no maneja muy bien los objetos dinámicos, pero a menudo no son el mejor enfoque de todos modos. La sección 10.3. Dispensers and Supplies of Small Objects en el manual puede ser útil.
Creo que el mejor modelo para esto es uno físico: crear un suministro limitado de latas en la máquina. Por ejemplo:
Breakroom is a room. "A run of the mill breakroom."
A soda pop is a kind of thing. The description is "A refreshing soda pop."
The soda machine is in the breakroom. It is fixed in place and transparent.
The description is "Just an average soda machine, with a large dispense
button."
There are three soda pops in the soda machine.
The dispense button is a part of the soda machine.
Instead of pushing the dispense button:
if a soda pop (called the can) is in the soda machine:
move the can to the breakroom;
say "A soda can dispenses.";
otherwise:
say "The machine is empty, so nothing happens.".
Test me with "look/x machine/push button/look/push button/
push button/push button/look".
(hacer que la máquina en lugar de opaque
transparent
si usted prefiere!). En lo anterior, también modifiqué la descripción de un refresco: si solo dice "Blah"
en lugar de The description is "Blah"
después de una definición de objeto, establece la descripción inicial (impresa como parte de la descripción de la habitación) en lugar de "examinar" descripción, que no creo que sea lo que quiere aquí, y he hecho del botón una "parte" de la máquina, en lugar de un objeto separado.
El resultado:
Welcome
An Interactive Fiction
Release 1/Serial number 110324/Inform 7 build 6G60 (I6/v6.32 lib 6/12N) SD
Breakroom
A run of the mill breakroom.
You can see a soda machine (in which are three soda pops) here.
>test me
(Testing.)
>[1] look
Breakroom
A run of the mill breakroom.
You can see a soda machine (in which are three soda pops) here.
>[2] x machine
Just an average soda machine, with a large dispense button.
In the soda machine are three soda pops.
>[3] push button
A soda can dispenses.
>[4] look
Breakroom
A run of the mill breakroom.
You can see a soda pop and a soda machine (in which are two soda pops) here.
>[5] push button
A soda can dispenses.
>[6] push button
A soda can dispenses.
>[7] push button
The machine is empty, so nothing happens.
>[8] look
Breakroom
A run of the mill breakroom.
You can see three soda pops and a soda machine (empty) here.
>
Gracias por la ayuda aquí. Me di cuenta del ejemplo que mencionaste esta mañana. Esta es una buena ayuda. Sin embargo, un seguimiento sobre esto, si dijera que 2000 pops estaban en la máquina, consumiría una gran cantidad de memoria o almacenaría una pila de objetos idénticos en una cantidad mínima de espacio. (es decir, si 1 pop tiene 100 bytes, ¿2000 pops son 100x2000 bytes?) – deepee1
No importa en este caso. Usando el enlace provisto había una oración que describía que cada objeto, de hecho, consumía la memoria. – deepee1