От: Peter (harbor:club.syscall.ru) 10.04.17 10:36 UTC
Класс объектовКому: All Тема: Создание контейнера в STEAD3 Конструкторы объектов широко использовались в STEAD2. В STEAD3 obj/dlg/room реализованы как классы объектов. Класс объектов удобно создавать для тех случаев, когда поведение создаваемого объекта не укладывается в стандартные объекты obj/room/dlg и вы хотите поменять методы класса. Изменив метод класса, например, вы можете вообще изменить то, как выглядит предмет в сцене. В качестве примера, рассмотрим создание класса "контейнер". Контейнер может хранить в себе другие объекты, быть закрытым и открытым. ==== -- create own class container cont = std.class({ -- создаем класс cont display = function(s) -- переопределяем метод показа предмета local d = std.obj.display(s) if s:closed() or #s.obj == 0 then return d end local c = s.cont or 'Внутри: ' -- описатель содержимого local empty = true for i = 1, #s.obj do local o = s.obj[i] if o:visible() then empty = false if i > 1 then c = c .. ', ' end c = c..'{'..std.nameof(o)..'|'..std.dispof(o)..'}' end end if empty then return d end c = c .. '.' return std.par(std.space_delim, d, c) end; }, std.obj) -- мы наследуемся от стандартного объекта ==== После этого, вы можете создавать контейнеры так: ==== cont { nam = 'ящик'; dsc = [[Тут есть {ящик}.]]; cont = 'В ящике: '; }: with { 'яблоко', 'груша'; } ==== Когда контейнер будет открыт, вы увидите описание ящика, а также содержимое ящика в виде строки ссылок: В ящике: яблоко, груша. dsc объектов яблоко и груша будут скрыты. К сожалению, подробное описание классов выходит за рамки данного руководства, эти вещи будут описаны в другом руководстве для разработчиков модулей. А пока, для вашей первой игры, вам не стоит писать свои классы объектов.
[1 / 203]
|