Разве noun не наследуется? Кажется, я это уже применял - и все работало.
Но вот сейчас, когда я писал код для goraph, появился тупой глюк.
Итак, код простейший:
#include <advr.t>
#include <stdr.t>
#include <errorru.t>
startroom: room
sdesc = "Спальная комната"
ldesc = "Единственная комната моей квартиры."
;
vial: item
location = nil
sdesc = "пузырёк"
rdesc = "пузырька"
ddesc = "пузырьку"
vdesc = "пузырёк"
tdesc = "пузырьком"
pdesc = "пузырьке"
noun = 'пузырек' 'пузырька' 'пузырьку' 'пузырьком' 'пузырьке' 'пузырьку#d' 'пузырьком#t'
ldesc = "На свету небольшой пузырёк длиной с палец поблескивает гранями."
isHim = true
;
vial1: vial
location = startroom
;Получаем:
>смотреть
Спальная комната
Единственная комната моей квартиры.
Ты видишь здесь пузырёк.
>взять пузырёк
Я не вижу здесь объект "пузырек".
>взять пузырек
Я не вижу здесь объект "пузырек".
>
Это что? ![]()
Пробовал с разными версиями русских библиотек.
Самое интересное, что если в наследнике явно прописать noun:
vial1: vial
location = startroom
noun = 'пузырек' 'пузырька' 'пузырьку' 'пузырьком' 'пузырьке' 'пузырьку#d' 'пузырьком#t'
;то все прекрасно...
Неактивен
Hind написал:
Спасибо )
Я понимаю разницу между классом и экземпляром класса - просто не знал, что в TADS существуют классы как таковые. Меня ввела в заблуждение фраза, которую я где-то прочел, что в TADS нет разницы между классами и объектами. Этого человека надо найти и покарать
Чего его искать? Это я (правда, вместе с Майклом Робертсом;). Вот как это описано в оригинальном мануале:
In TADS, there is no distinction between classes and instances of classes, in that a class is also an object. Hence, data values as well as methods can be inherited from a parent object. In TADS, the only distinction between a class and a normal object is that a class object is ignored by the player command parser.
И перевод:
В TADS нет такого различия между классами и объектами, т. е. класс также представляет собой объект. Поэтому от родительского объекта/класса можно унаследовать как структуру данных, так и конкретные значения. Единственное различие между классом и обычным объектом в TADS заключается в том, что классы игнорируются синтаксическим анализатором команд игрока.
Еще одно различие, которое автор как-то упустил - это то, что лексические свойства наследуются только от классов (что, если задуматься, в целом логично). Я, правда, вообще наследованием лексики почти не пользуюсь - переписываю ее заново для каждого объекта.
Отредактировано uux (07.12.2007 01:26)
Неактивен