154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
|
1 | |
Как правильно реализовать событие и подписку на него через несколько наследуемых классов?02.08.2015, 15:33. Показов 846. Ответов 2
Метки нет (Все метки)
Всё еще работаю над игрой Морской Бой в свободное время. И есть у меня такая структура: Game class, Battlefield Class, Cell Class. Battlefield class - это класс, который хранит в себе Cells и Ships (Ship - тоже класс). А в самом Game Class я создаю два экземпляра класса Battlefield (Enemy и Friendly) (ведь для игры в морской бой нужно два поля ).
В классе Cell есть событие onClick, на которое я подписываюсь в классе Battlefield (так как 100 таких экземляров класса Cell я создаю именно в классе Battlefield). Что же я хочу сделать? Я хочу создать класс AI, который будет делать свой ход, когда я уже свой сделал. Естественно, управлять экземпляром этого класса я хотел бы в классе Game. Проблема! Как мне в классе Game подписаться на событие onClick, которое находится на два уровня глубже? Возможные варианты: Создать цепочку событий? То есть, в классе Game подписаться на событие класса Battlefield (создадим), которое в свою очередь будет вызвано событием onClick на Cell? Мне не нравится этот вариант, если честно. Может управлять экземпляром класса AI в классе Battlefield? Не логично вовсе. Battlefield ничего не должен знать об AI. Есть что-нибудь поэлегантнее? Заранее спасибо.
0
|
02.08.2015, 15:33 | |
Ответы с готовыми решениями:
2
Как можно реализовать подписку на событие через лямбда-выражение? Нужно реализовать интерфейс IComparable в каждом из наследуемых классов Отменить проведение через подписку на событие Сложение объектов базового и наследуемых классов через виртуальную функцию |
02.08.2015, 17:23 | 2 |
Почему не нравится? Вполне логично. При клике на Cell состояние Battlefield меняется. Если у Battlefield изменилось состояние он генерирует событие Changed. Нормально.
1
|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
|
02.08.2015, 17:56 [ТС] | 3 |
Кто-то переименовал тему. Там нету наследуемых классов. Спасибо большое за ответ, тогда так и реализую. Просто показался вариант несколько грубоватым.
0
|
02.08.2015, 17:56 | |
02.08.2015, 17:56 | |
Помогаю со студенческими работами здесь
3
Как реализовать подписку ?!? Как связать несколько классов через один общий класс? перехватить подписку на событие Отменить подписку кнопки на событие Как реализовать изменение полей классов через сеттеры и геттеры Список наследуемых классов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |