Сообщение Re[9]: проектирование от 20.07.2017 15:57
Изменено 20.07.2017 16:11 dmz
Re[9]: проектирование
.
F>одноствольная состоит из двух спрайтов(башни и ствола), а двуствольная из трёх.
F>при этом при наследовании можно вызвать родительский метод отрисовки и к нему добавить второй ствол.
F>в случае х-я родителя так не вызвать, придётся дублировать код.
В случае хаскеля нет никакого "родителя". Если у нас стоит задача отрисовывать
конструкции, составленные из нескольких спрайтов, то можно этого достичь примерно
9000 разными способами.
Один из них, например — взять значение, и выдернуть из него все спрайты
которые и отрисовать скопом:
F>можно завести себе поле "parent" и обращаться к нему, но в случае нескольких уровней потомков нельзя вызвать отрисовку, обратившись прозрачно "насквозь" через несколько родителей.
F>вот вызов методов далёких предков я и ищу.
Алё, тут нету наследования. Какие еще предки. Это же хаскел. И заметим, много где нету,
но ничего, живут как-то. Алсо глубокие наследования вроде бы ```considered harmful```,
и как свидетель системы с глубокими цепочками наследования --- соглашусь.
F>одноствольная состоит из двух спрайтов(башни и ствола), а двуствольная из трёх.
F>при этом при наследовании можно вызвать родительский метод отрисовки и к нему добавить второй ствол.
F>в случае х-я родителя так не вызвать, придётся дублировать код.
В случае хаскеля нет никакого "родителя". Если у нас стоит задача отрисовывать
конструкции, составленные из нескольких спрайтов, то можно этого достичь примерно
9000 разными способами.
Один из них, например — взять значение, и выдернуть из него все спрайты
которые и отрисовать скопом:
let sprites = [x | x@(Sprite{..}) <- universeBi myMegaWtfObject]
mapM_ (drawSprite ctx) sprites
F>можно завести себе поле "parent" и обращаться к нему, но в случае нескольких уровней потомков нельзя вызвать отрисовку, обратившись прозрачно "насквозь" через несколько родителей.
F>вот вызов методов далёких предков я и ищу.
Алё, тут нету наследования. Какие еще предки. Это же хаскел. И заметим, много где нету,
но ничего, живут как-то. Алсо глубокие наследования вроде бы ```considered harmful```,
и как свидетель системы с глубокими цепочками наследования --- соглашусь.
Re[9]: проектирование
.
F>одноствольная состоит из двух спрайтов(башни и ствола), а двуствольная из трёх.
F>при этом при наследовании можно вызвать родительский метод отрисовки и к нему добавить второй ствол.
F>в случае х-я родителя так не вызвать, придётся дублировать код.
В случае хаскеля нет никакого "родителя". Если у нас стоит задача отрисовывать
конструкции, составленные из нескольких спрайтов, то можно этого достичь примерно
9000 разными способами.
Один из них, например — взять значение, и выдернуть из него все спрайты
которые и отрисовать скопом:
F>можно завести себе поле "parent" и обращаться к нему, но в случае нескольких уровней потомков нельзя вызвать отрисовку, обратившись прозрачно "насквозь" через несколько родителей.
F>вот вызов методов далёких предков я и ищу.
Алё, тут нету наследования. Какие еще предки. Это же хаскел. И заметим, много где нету,
но ничего, живут как-то. Алсо глубокие наследования вроде бы ```considered harmful```,
и как свидетель системы с глубокими цепочками наследования --- соглашусь.
Ну и вообще --- мне тут видится подвох. С каких это пор графические объекты в играх
композируют в коде из спрайтов? А не рисуют/моделируют/размечают в редакторе? Скорее
всего, IRL тут будет таки один спрайт, смоделированный в редакторе, и какая-то
метаинформация.
И редактировать число стволов у пушки, приделывать свистелки и т.п. можно будет вообще
не трогая код.
F>одноствольная состоит из двух спрайтов(башни и ствола), а двуствольная из трёх.
F>при этом при наследовании можно вызвать родительский метод отрисовки и к нему добавить второй ствол.
F>в случае х-я родителя так не вызвать, придётся дублировать код.
В случае хаскеля нет никакого "родителя". Если у нас стоит задача отрисовывать
конструкции, составленные из нескольких спрайтов, то можно этого достичь примерно
9000 разными способами.
Один из них, например — взять значение, и выдернуть из него все спрайты
которые и отрисовать скопом:
let sprites = [x | x@(Sprite{..}) <- universeBi myMegaWtfObject]
mapM_ (drawSprite ctx) sprites
F>можно завести себе поле "parent" и обращаться к нему, но в случае нескольких уровней потомков нельзя вызвать отрисовку, обратившись прозрачно "насквозь" через несколько родителей.
F>вот вызов методов далёких предков я и ищу.
Алё, тут нету наследования. Какие еще предки. Это же хаскел. И заметим, много где нету,
но ничего, живут как-то. Алсо глубокие наследования вроде бы ```considered harmful```,
и как свидетель системы с глубокими цепочками наследования --- соглашусь.
Ну и вообще --- мне тут видится подвох. С каких это пор графические объекты в играх
композируют в коде из спрайтов? А не рисуют/моделируют/размечают в редакторе? Скорее
всего, IRL тут будет таки один спрайт, смоделированный в редакторе, и какая-то
метаинформация.
И редактировать число стволов у пушки, приделывать свистелки и т.п. можно будет вообще
не трогая код.