Форум программистов, компьютерный форум, киберфорум C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Кратчайший путь паука до мухи https://www.cyberforum.ru/ cpp/ thread1922937.html
Есть задача (https://www.e-olymp.com/ru/problems/74): Паук и муха - 2 В пустой прямоугольной комнате длины А, ширины В и высоты С муха упала на пол и уснула. Паук, находящийся на одной из стен, или на полу, или на потолке, начал двигаться к ней по кратчайшему пути. На какое расстояние он при этом переместится, Известно, что паук может передвигаться только по поверхности комнаты или же...
C++ Графическая оболочка на С++
Привет всем, учил С++ , но так просто для проведения досуга , теперь решил писать программы, столкнулся с вопросом, хочу писать программы, но с графическими оболочками(не просто с выводом в консоль,а чтобы красиво было), подскажите как это делать,что нужно знать. Если можно, скиньте ссылки на учебники, материалы и т.д. по созданию графических оболочек на с++,а мб и IDE. Заранее спасибо)
C++ Где разместить бота https://www.cyberforum.ru/ cpp/ thread1922151.html
Возможно не по теме, но надеюсь поможете. Есть ли сервисы, на которых можно запустить и оставить выполняться код (c++, c#, python). Конкретно ничего не прошу, достаточно названия:)
C++ Подскажите библиотеку для работы с блочными устройствами Хотелось бы написать программу вроде dmde только с большей автоматизацией и меньшим функционалом кроссплатформенную. К примеру заполнить все свободное пространство на разделе определенным патерном без модификации файловой таблицы ну или как это называют - secure wipe free space. Или забить нулями пространство от 1 до 2048 сектора. Или затереть файловую таблицу и ее копии, pbr, или модифицировать.... https://www.cyberforum.ru/ cpp/ thread1921316.html
C++ Конференция C++ Russia (24-25 февраля 2017): кто пойдёт?
Конференция C++ Russia (24-25 февраля 2017): кто пойдёт? Если кто-нибудь из форумчан там будет, напишите, пожалуйста, свои впечатления.
C++ Реализовать алгоритм шифрования/дешифрования файла в режиме сцепления шифрованных блоков https://www.cyberforum.ru/ cpp/ thread1920923.html
Здравствуйте друзья, помогите пожалуйста с решением следующей задачи, я писал насчет нее в посте JAVA, но если у кого то получится реализовать на C++, буду очень признателен: Реализовать алгоритм шифрования/дешифрования двоичного файла в режиме сцепления шифрованных блоков. В качестве алгоритма шифрования использовать любой двоичный блочный шифр (разрешается пользоваться библиотеками выбранного...
C++ Двумерное преобразование фурье Где б разжиться функцией двумерного преобразования фурье? Причем, желательно, не в составе математических библиотек. Потому как тащить матлибу ради одной функции как-то не хочется. Входные данные комплексные. https://www.cyberforum.ru/ cpp/ thread1920826.html C++ Курсовая - переводчик (словарь) на С++
Доброго времени суток! Меня зовут Алексей, я студент 2го курса колледжа по специальности Разработка ПО, вот подошло время первых курсовых, а я полный ноль (1й курс чисто школьная программа, 2й курс (1 семестр) - блок схемы и чутка с++). Тема моей курсовой работы - "Розробка програми для автоматизації перекладу з англійської на українську" (рус. Разработка программы для автоматизации перевода с...
C++ Перевод программы с C# на C++ https://www.cyberforum.ru/ cpp/ thread1920187.html
Кто хорошо знаком с С# можете помочь с переводом данной программы на С++. Заранее огромное спасибо, просто подобных программ на С++ не видел, нашел только на С#, а я немного разбираюсь в С++ и мне хотелось бы несколько доработать данную программу.
C++ Dev-C++ ошибка при переносе программы на другую систему с 32 или 64 бит https://www.cyberforum.ru/ cpp/ thread1918843.html
Здравствуйте. Компилировалась простая программа на C++ при помощи dev-C++.При переносе на другую систему с 32 или 64 бит, уже не помню, пишет, что не является приложением win32. В чём может быть дело? Заранее благодарен!
C++ Как на узнать название процесора?
Как на с++ узнать название процесора буду благодарен за код
C++ Разработка web-приложения, приложения под ОС Android,Windows https://www.cyberforum.ru/ cpp/ thread1918553.html
Доброго времени суток ребят, кто узрел эту тему прошу не проходите мимо, прошу вашей помощи.Мне требуется определиться с темой для дипломной работы, хотя бы на оценку удовлетворительно, чтоб в работе присутствовал обьект автоматизации, программирование, так как я учусь по специальности АСОиУ, планировал сделать акцент на чем-то из web-приложений, приложений на ОС Android.Изначально утвердил тему...
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
02.03.2017, 17:50  [ТС] 0

Архитектура и рефакторинг: построение системы ECS - C++ - Ответ 10166851

02.03.2017, 17:50. Показов 2915. Ответов 29
Метки (Все метки)

Ответ

hoggy, Ну если управление систем отделить от сцены, то это совсем другая песня.
Ну допустим будет какой-нибудь другой контейнер для хранения и манипулирования всех систем. Назовем его RootSystem.
Как Вы мне дали понять, каждый компонент должен знать к какой системе он относится. Добавление/Удаление компонента от игрового объекта приводит вызов подписывания/отписывания этого компонента от той системы, к которой он относится.
RootSystem - это просто хранилище систем + с функциями запуска систем в игровом цикле( ну или еще какими-нибудь вкусняшками)
Со сценой что? Все тоже самое, только теперь без систем? Тоесть она также содержит Node объекты и проходит рекурсивно их иерархию для изменения трансформаций?

Добавлено через 23 часа 34 минуты
hoggy, Я вот что не пойму еще.
Мы выйснили, что каждый компонент должен знать о своей системе. А система должна знать о своих компонентах тоже?
Реализация конкретной системы у меня сейчас выглядит следующим образом:
C++Выделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
class BTSSystem
{
public:
    virtual ~BTSSystem() {}
    ...
    virtual void        execute()           =   0;  
    virtual void        passComponents()    =   0;
    virtual void        initializeComponent() = 0;
    virtual void        releaseComponent() = 0;
    virtual void        registerComponent( BTSComponent* component ) = 0;
    virtual void        unregisterComponent( BTSComponent* component ) = 0;
    ...                 
};
 
template<typename C>
class BTSRegisterSystem : public BTSSystem
{
public:
    virtual ~BTSRegisterSystem() {}
    ...
 
    void passComponents()
    {
        // Осуществляем проход
        for( const auto& component : _components )
        {
            _currentComponent = component;
            execute();
        }
    }
 
    void    registerComponent( BTSComponent* component )
    {
        // Если компонент не подходит для системы
        _currentComponent = dynamic_cast<C*>( component );
        if( _currentComponent == nullptr )
            return;
 
        // Если компонент уже существует в системе
        auto it = std :: find( _components.begin(), _components.end(), _currentComponent );
        if(  it != _components.end() )
            return;
 
        // Инициализируем компонент в системе
        initializeComponent();
 
        // Добавляем компонент в список
        _components.push_back( _currentComponent );
    }
        
    void unregisterComponent( BTSComponent* component )
    {
        // Если компонент не подходит для системы
        _currentComponent = dynamic_cast<C*>( component );
        if( _currentComponent == nullptr )
            return;
 
        // Если компонент не существует в системе
        auto it = std :: find( _components.begin(), _components.end(), component );
        if(  it == _components.end() )
            return;
 
        // Освобожаем систему от компонента
        releaseComponent();
 
        _components.erase( it );
    }
 
    const std :: vector<C*>& getComponents() const
    {
        return _components;
    }
 
private:
    std :: vector<C*>   _components;
 
protected:
    C*                  _currentComponent;
};
Ну и реализация конкретной системы:
C++Выделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class BTSCameraSystem : public BTSRegisterSystem<BTSComponentCamera>
{
public:                                     
    ~BTSCameraSystem() {}
    ...
    void    execute()
    {
        // _currentComponent - это тот компонент, с которым мы работаем в данное время
    }
    void    initializeComponent()
    {
        // Какие-нибудь дополнительные настройки после подписывания
    }
    
    void    releaseComponent()
    {
        // Какие-нибудь дополнительные настройки после отписывания
    }   
};
Так вот, если у меня компонент будет знать о системе, к которой он принадлежит, то при Добавлении/Удалении его из хранилища(тоесть игрового объекта) мне нужно будет вызывать соответственно registerComponent/unregisterComponent у той системы, на которую он подписан и передавать this соответственно?
Я что-то вообще запутался. У меня классы Компонента и Системы становятся очень похожи друг на друга при такой реализации

Добавлено через 34 минуты
hoggy, так...че-то пытаюсь сделать, и ничерта не получается
Я, наверное, тебя не правильно понял Каждый компонент не должен знать о той системе, к которой он относится; он должен знать о объекте(RootSystem), который хранит все системы, и запрашивать у него ту систему, к которой он относится( при регистрации направимер ). Так?

Вернуться к обсуждению:
Архитектура и рефакторинг: построение системы ECS C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2017, 17:50
Готовые ответы и решения:

архитектура операционной системы
какую архитектуры ставить при установки винды 7? х86 или х64? оперативка 2 гига

Архитектура микропроцесcорной системы
Всём привет, если есть, то дайте толковую ссылку на данный вопрос. Архітектура мікропроцесорної...

Архитектура системы с подключаемыми модулями
Подскажите, пожалуйста, способ реализовать систему. Задача заключается в следующем: написать...

Архитектура системы уведомления для клиентов при работе с СУБД
Приветствую всех. Хочу привести в порядок свое приложение. А именно, организовать систему...

29
02.03.2017, 17:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2017, 17:50
Помогаю со студенческими работами здесь

Объектно-ориентированное проектирование и дизайн приложений: взаимодействие, модели, системы, архитектура
В общем, дело такое. В ООП ничего не понимаю. Нужны некоторые уточнения парадигмы. Предполагается...

В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу
Добрый день. При запуске программы выскакивает вот такая вот ошибка. В чем может быть проблема и...

архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников
сабж. кто чем может помочь юному,непонемающему в этой области человеку.желательно книгами.спасибо.

Построение экспертной системы
Построить систему, которая дает возможность распознавать виды транспорта (автобус, троллейбус,...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru