Добавляем объекты в сцену
Для того, чтобы поместить в сцену объекты, существует несколько путей.
Во-первых, при создании комнаты можно определить список 'obj', состоящий из имён объектов:
obj { -- объект с именем, но без переменной
nam = 'ящик';
dsc = [[На полу я вижу {ящик}.]];
act = [[Тяжёлый!]];
}
room {
nam = 'main';
disp = 'Большая комната';
dsc = [[Вы в большой комнате.]];
obj = { 'ящик' };
};Теперь, при отображении сцены мы увидим объект "ящик" в динамической части.
Вместо имени объекта, вы можете использовать переменную-ссылку, если только она была определена заранее:
apple = obj { -- объект с переменной, но без имени
dsc = [[Тут есть {яблоко}.]];
act = [[Красное!!]];
}
room {
nam = 'main';
disp = 'Большая комната';
dsc = [[Вы в большой комнате.]];
obj = { apple };
};Альтернативной формой записи является конструкция with:
room {
nam = 'main';
disp = 'Большая комната';
dsc = [[Вы в большой комнате.]];
}:with {
'ящик',
}Конструкция with позволяет избавиться от лишнего уровня вложенности в коде игры.
Во-вторых, вы можете объявлять объекты прямо внутри obj или with, описывая их определение:
room {
nam = 'main';
disp = 'Большая комната';
dsc = [[Вы в большой комнате.]];
}:with {
obj {
nam = 'ящик';
dsc = [[На полу я вижу {ящик}.]];
act = [[Тяжёлый!]];
}
};Это удобно делать для объектов - декораций. Но в таком случае, вы не сможете создавать объекты с переменной-ссылкой. К счастью, для декораций это и не нужно.
Если в комнату помещаются несколько объектов, разделяйте их ссылки запятыми, например:
obj = { 'ящик', apple };
Вы можете вставлять переводы строк для наглядности, когда объектов много, например, так:
obj = {
'table',
'apple',
'knife',
};Ещё один способ размещения предметов заключается в вызове функций, которые поместят объекты в требуемые комнаты. Он будет рассмотрен в дальнейшем.