Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.06.2018, 16:01
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 11  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
Цитата:
Сообщение от RedHead90 Посмотреть сообщение
Как мне кажется, если решать "проблему раздутого класса" чисто с помощью цепочки наследования, то мы получим некое разросшееся дерево
Честно говоря, на мой взгляд, решать проблему раздутого класса наследованием вообще не верно, ибо оно не для того придумано. Наследование предназначено для полиморфизма и модульности архитектуры, а также для избавления от копипасты кода. Наследование имеет смысл, когда детей больше, чем один. Даже в Чистом коде об этом есть - каждый следующий узел потомков в наследовании должен представлять из себя дерево, то есть разветвляться. Иначе наследование просто не имеет смысла и создавать кучу родителей и потомков на пустом месте - избыточно. Поэтому решать проблему раздутого класса надо, конечно же, через композицию.
__________________
while(live()) { hope(); }

Старый 28.06.2018, 00:28
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 12  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Сейчас попробовал сделать SkillManager и загнать туда все скиллы, а также методы, связанные с моделью их увеличения.
Ну и вот на досуге как-нибудь подумай: может не обязательно хранить ссылку на него как свойство Героя и тем более обеспечивать доступ к его свойствам и методам через геттеры Героя (о чем говорит RedHead90). Может, этот менеджер скиллов может существовать "сам по себе" там, где он собственно и нужен? Ну, конечно, если у всех других персонажей нет никаких скиллов.
__________________
Reality.getBounds(this);

Старый 28.06.2018, 10:53
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 13  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Не, скиллы у неписей учитываются, с этим даже отдельная геймплейная механика связана, где они не все изначально известны и игроку требуется по ходу прояснять их для повышения общей эффективности.

В любом случае, я очень всем признателен за комментарии. Тема началась ни шатко ни валко, но по итогу раскрутилась-таки. Много чего почерпнул.

Добавлено через 1 минуту
Цитата:
Сообщение от ZergMaster Посмотреть сообщение
Даже в Чистом коде об этом есть - каждый следующий узел потомков в наследовании должен представлять из себя дерево, то есть разветвляться.
ZergMaster, чистый код - имеется в виду книга Боба Мартина?
__________________
Не сломано - не чини!

Старый 28.06.2018, 15:01
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 14  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
Appleman да. Но это не точно
__________________
while(live()) { hope(); }

Старый 29.06.2018, 00:48
RedHead90 вне форума Посмотреть профиль Отправить личное сообщение для RedHead90 Найти все сообщения от RedHead90
  № 15  
Ответить с цитированием
RedHead90

Регистрация: Apr 2018
Сообщений: 42
Цитата:
Но в случае если число свойств, различных для Player и NPC, невелико, то проблему раздутого класса не решает, а геморроя добавляет.
Проблему раздутого класса это точно решит. Но если слепо следовать такому подходу, может появиться проблема большого количества очень маленьких классов.

Цитата:
Я сам изначально вводил приватные переменные в классы-наследники (т.е. делал всё то же, но не в форме отдельного класса, а просто свойствами в имеющийся)
Тут я не совсем понял. Если ты про тот код, что я привел, то там все компоненты - это публичные свойства. Я просто опустил модификаторы доступа. Это классы-узлы, в которых вообще нет никакой логики, а только публичные поля, указывающие на компоненты. Это тупо списки полей, которые потом автоматом инициализируются с помощью интроспекции или еще как-то.

Старый 19.07.2018, 01:14
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 16  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Послушайте, други,печальную и поучительную историю об импульсивном программировании. Я наконец добрался до Entity-Component-System, пяток статей прочитал (RedHead90, спасибо за наводку), и так меня этот подход вставил, ну просто не по-детски! По крутизне почти MVC, имхо. И загорелся я если не целиком под него переписать, то хотя бы свою частную проблему с раздутым классом персонажа решить. И рефакторил я хрен знает сколько часов на кураже. Выделил отдельные компоненты, схожие по области и логике, кое-где от них ещё унаследовался для реализации специфики, задвинул в них методы обработки данных. На первый взгляд получилось шикарно. Вполне компактный класс Character, к которому подключаются блоки Personality, Parameters, Skills, Statuses и т.п. И все они ни хрена не инкапсулированы. Надо кому со стороны, например, условие проверить - не вопрос! Обращаемся: character.personality[PropID] и вперёд с песней!

Но вот один момент я, блин, не учёл. А он по ходу самый важный. Почему-то мне было невдомёк, что в "чистом" виде все свойства, забитые в Personality и Sexuality, никому не нужны. Причём совсем. Получая, например, значение интеллекта, нужно ещё посмотреть, не надет ли шутовской колпак (WearManager), и не контужен ли наш герой (StatusManager). Короче, тянуть что-то в обход самого "узлового" Character ни фига не получается. А если через него, то теперь у нас не "одно окно" в форме character[PropID], а ещё бухгалтерия с определением, к какому компоненту обращаться.

В общем, сижу-горюю. И обратно к бардаку откатывать неохота, и как это хозяйство без крови организовать не придумывается.
__________________
Не сломано - не чини!

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 14:25.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.