Нужна помощь в создании новых объектов в inform7

очень новый для Inform7, и это стиль. Я просмотрел предоставленные документы, и некоторый интернет-просмотр ничего не дал для меня... это упрощенная версия того, что я ищу. Я хочу написать что-то вроде этого:

breakroom is a room. "A run of the mill breakroom."

soda pop is a kind of thing. "A refreshing soda pop."

soda machine is in the breakroom.  dispense button is on the soda machine.

instead of pushing dispense button:
    say "A soda can dispenses".
    create a soda pop (called pop) in the breakroom.

" создайте газировку (называемую pop) в комнате отдыха.- это, конечно, не приказ, но я надеюсь, что он передаст то, что я хочу сделать. Я не знаю, как создавать объекты во время выполнения. Можно ли это сделать разумно? Любая помощь будет оцененный. Я знаю, что здесь нет большого следа для информации, но я думаю, что я бы дал ему шанс.

2 ответов


Inform не очень хорошо обрабатывает динамические объекты, но они часто не лучший подход в любом случае. Раздел 10.3. Дозаторы и расходные материалы для мелких предметов в руководстве может быть полезно.

Я думаю, что лучшая модель для этого-физическая: создайте ограниченный запас банок в машине. Например:

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".

(сделать машину opaque, а не transparent Если вы предпочитаете!). В выше, я подправил описание газировки -- если ты просто скажешь "Blah", а не The description is "Blah" после определения объекта вы устанавливаете начальное описание (напечатанное как часть описания комнаты), а не описание "исследовать", которое я не думаю, что это то, что вы хотите здесь-и я сделал кнопку "частью" машины, а не отдельным объектом.

результат:

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.

>

Я написал расширение для такого рода вещей:http://inform7.com/extensions/Jesse%20McGrew/Dynamic%20Objects/index.html

чтобы использовать его, вам нужно создать объект-прототип (скажем, "исходный содовый поп"), а затем использовать выражение a new object cloned from the original soda pop для создания нового объекта. Это более эффективно для памяти, чем создание большого статического пула объектов, но он не работает на Z-машине (только Glulx) и имеет некоторые оговорки, если ваши объекты сложный.

кроме того, серьезно подумайте о том, действительно ли вам нужно создание динамических объектов. Это может быть проще и менее запутанным для игроков, если вы просто придумаете разумную причину отказаться от действия, например: "вы не можете заставить себя тратить деньги, когда вы даже не закончили последнюю содовую, которую вы купили."Имея пару тысяч банок содовой, лежащих вокруг, вероятно, сделает игру медленнее, не добавляя много пользы.