Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
1

Как правильно реализовать событие и подписку на него через несколько наследуемых классов?

02.08.2015, 15:33. Показов 846. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всё еще работаю над игрой Морской Бой в свободное время. И есть у меня такая структура: 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.08.2015, 15:33
Ответы с готовыми решениями:

Как можно реализовать подписку на событие через лямбда-выражение?
Данный код реализует семисегментные часы. В 33 строке кода происходит подписка на событие...

Нужно реализовать интерфейс IComparable в каждом из наследуемых классов
Вот у меня есть абстрактный класс и наследуемые от него три, запихнул их в коллекцию. Нужно...

Отменить проведение через подписку на событие
Всем добрый вечер! Такой вопрос - нужно проверять номенклатуру на один признак - реквизит...

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

2
Эксперт .NETАвтор FAQ
10410 / 5140 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
02.08.2015, 17:23 2
Цитата Сообщение от Pro100Tom Посмотреть сообщение
Создать цепочку событий? То есть, в классе Game подписаться на событие класса Battlefield (создадим), которое в свою очередь будет вызвано событием onClick на Cell? Мне не нравится этот вариант, если честно.
Почему не нравится? Вполне логично. При клике на Cell состояние Battlefield меняется. Если у Battlefield изменилось состояние он генерирует событие Changed. Нормально.
1
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
02.08.2015, 17:56  [ТС] 3
Кто-то переименовал тему. Там нету наследуемых классов. Спасибо большое за ответ, тогда так и реализую. Просто показался вариант несколько грубоватым.
0
02.08.2015, 17:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.08.2015, 17:56
Помогаю со студенческими работами здесь

Как реализовать подписку ?!?
Здравствуйте! Нужно реализовать подписку доступа на месяц, на год. Помогите пожалуйста...

Как связать несколько классов через один общий класс?
Здравствуйте. Есть несколько несвязанных классов, каждый из которых хранит указатель на один общий...

перехватить подписку на событие
Есть интерфейс, декларирующий события. Есть мой класс, реализующий интерфейс. Логика класса...

Отменить подписку кнопки на событие
У меня есть код: private void button1_Click(object sender, EventArgs e) { ...

Как реализовать изменение полей классов через сеттеры и геттеры
#pragma once #include<iostream> class clock_c { protected: char *name; int...

Список наследуемых классов
Здравствуйте. Скажите пожалуйста можно ли получить список всех классов, которые наследуются от...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru