TADS — объектно ориентированный язык программирования. Со всеми вытекающими оттуда последствиями. Комнаты и главный персонаж и вообще всё остальное написано на этом языке.
Флаги, на которые ты намекаешь, устанавливаются описанием свойства в классе.
cavern: room
sdesc = "Скудно освещённая пещера"
isMossed = true
ldesc =
{
"В этой пещере темно и сыро. ";
if (self.isMossed)
"Слой мха на стенах служит пристанищем для каких-то насекомых. С ";
else
"Обнажённые стены покрыты росой, а с ";
"потолка капает вода. ";
}
;В этом примере sdesc с точки зрения языка ничем не отличается от любого другого свойства объекта cavern. В том числе флага isMossed. И, по большому счёту, от ldesc (за исключением того, что ldesc это метод). ldesc показывает пример проверки флага isMossed. В зависимости от состояния флага, описание комнаты будет выглядеть по-разному. Если флаг нужно проверить из другого объекта, пиши cavern.isMossed.
Чтобы изменить состояние флага, присваиваешь ему нужное значение:
cavern.isMossed := nil;
ГП такой же объект, как и комната. Всё вышеописанное применимо к нему.
Неактивен