AfterlifeRL

Закрытые или заброшенные проекты, не состоявшие в Клубе, но имевшие ветку на форуме.

Модератор: Jolly Roger

Аватара пользователя
Jolly Roger
Сообщения: 2973
Зарегистрирован: 27 ноя 2009, 09:10
Откуда: Minsk, Belarus

Re: AfterlifeRL

Сообщение Jolly Roger » 02 дек 2010, 07:12

2kipar, никаких флеймворов! :wink:
Макконел, также рекомендовал подгонять программу под её задачи, вариант с полным списком возможностей для предметов позволяет делать всякие ужасы вроде лечащих мечей и проч интересных мутантов без особого труда, хотя такой спор уже был, вроде даже с моим участием. :lol:
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.

Аватара пользователя
kipar
Сообщения: 2082
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: AfterlifeRL

Сообщение kipar » 02 дек 2010, 08:51

JustHarry, после размышления, я бы все-таки рекомендовал переходить с object (статические объекты) на class(динамические объекты). Вот такой код:
W.N := 1;
Inventory[1] := W;
W.N := 2;
writeln(Inventory[1].N);
По твоему, какое число выведет?




Если ты понимаешь, что выведется 2, а при присвоении Inventory[1] := W; у нас создается копия объекта (что неоптимально по производительности и чревато ошибками, если мы продолжим совместно использовать и w и Inventory), то все ок, иначе - юзай class и изучай Item.Create\Item.Free

[offtopic]
Скрытый текст: ПОКАЗАТЬ
Jolly Roger, был похожий спор про флаги - и насчет флагов я теперь склонен согласиться. Флаги в определенных случаях хорошая альтернатива классам TCanWear\TCanUse\TCanMove...

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

Главная проблема полного списка - он противоречит Главному Императиву Управления Сложностью - тебе придется все время держать в памяти какие из свойств предмета используются, а какие - нет.
Предмет броня будет экспортировать тыщу свойств типа износа, концентрации снадобья, количества патронов, урона и типа повреждения, и ты должен будешь помнить, в каких процедурах что надо использовать. Плюс куча case - допустим используем Mix на два объекта - если это снадобья, надо проверить их концентрации, если один из них броня - надо обработать влияние снадобья на свойства брони, если оружие - обработать влияние снадобья на оружие..., если добавим новый тип - новые проверки.
Лечащие мечи имхо все эти недостатки не оправдывают. Да, и такой спор правда был, просто в то время я не читал Совершенный Код, поэтому не был так уверен в своей правоте.
[/offtopic]

JustHarry
Сообщения: 655
Зарегистрирован: 30 июл 2010, 17:13

Re: AfterlifeRL

Сообщение JustHarry » 02 дек 2010, 10:21

W.N := 1;
Inventory[1] := W;
W.N := 2;
writeln(Inventory[1].N);
По твоему, какое число выведет?
Я думал что выведет 1, но=(

На самом деле, я сейчас немного погрузился в учебу, и отвлекся от всего этого. Я думаю, мне стоит сначала разобраться в некоторых основах ООП, посмотреть как реализуются динамические списки на указателях, и т.д, а потом уже браться за разработку итемов. Поторопился я. К тому же, предметы это пока не самое главное, на них можно забить до какого-то времени, заодно и подводных камней уже будет меньше.

JustHarry
Сообщения: 655
Зарегистрирован: 30 июл 2010, 17:13

Re: AfterlifeRL

Сообщение JustHarry » 24 фев 2011, 09:11

Нужно было сделать это сразу, конечно, но...

Перенесите в Lost Dreams, пожалуйста.

Аватара пользователя
Sanja
Администратор
Сообщения: 776
Зарегистрирован: 24 ноя 2006, 12:25
Откуда: Новосибирск
Контактная информация:

Re: AfterlifeRL

Сообщение Sanja » 24 фев 2011, 12:15

Ну, если так, то поехали.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей