Re[9]: проектирование
От: dmz Россия  
Дата: 20.07.17 15:57
Оценка:
.

F>одноствольная состоит из двух спрайтов(башни и ствола), а двуствольная из трёх.

F>при этом при наследовании можно вызвать родительский метод отрисовки и к нему добавить второй ствол.
F>в случае х-я родителя так не вызвать, придётся дублировать код.

В случае хаскеля нет никакого "родителя". Если у нас стоит задача отрисовывать
конструкции, составленные из нескольких спрайтов, то можно этого достичь примерно
9000 разными способами.

Один из них, например — взять значение, и выдернуть из него все спрайты
которые и отрисовать скопом:

let sprites = [x | x@(Sprite{..}) <- universeBi myMegaWtfObject]
mapM_ (drawSprite ctx) sprites



F>можно завести себе поле "parent" и обращаться к нему, но в случае нескольких уровней потомков нельзя вызвать отрисовку, обратившись прозрачно "насквозь" через несколько родителей.


F>вот вызов методов далёких предков я и ищу.


Алё, тут нету наследования. Какие еще предки. Это же хаскел. И заметим, много где нету,
но ничего, живут как-то. Алсо глубокие наследования вроде бы ```considered harmful```,
и как свидетель системы с глубокими цепочками наследования --- соглашусь.


Ну и вообще --- мне тут видится подвох. С каких это пор графические объекты в играх
композируют в коде из спрайтов? А не рисуют/моделируют/размечают в редакторе? Скорее
всего, IRL тут будет таки один спрайт, смоделированный в редакторе, и какая-то
метаинформация.

И редактировать число стволов у пушки, приделывать свистелки и т.п. можно будет вообще
не трогая код.
Отредактировано 20.07.2017 16:11 dmz . Предыдущая версия . Еще …
Отредактировано 20.07.2017 16:00 dmz . Предыдущая версия .
Отредактировано 20.07.2017 15:57 dmz . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.