![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
в статью не вчитывался, но беглый взгляд зацепился на не точностях.. тут грань не четкая.. лучше на "живом" примере: букет цветов - композиция.. ваза, в которой стоит букет цветов - агрегация.. Добавлено через 1 минуту и 28 секунд игрок агрегирует не карту, а указатель на карту, а карта представляет собой композицию игроков и врагов.. |
|||
|
||||
TGrey |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Ну только по выше указанному совету класс Гейм представляет собой композицию игроков и врагов?
Примерно такая структура классов получается. А куда тогда желательно впихнуть Класс, который буде рисовать карту? Если его сделать независимым и создавать вместе с Game. И потом просто передавать ему массив с картой?
Ничего не корректного не будет? |
||||
|
|||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
"обычно" класс Гейм не предоставляет собой композицию врагов и плееров, так как без он не предоставляет их наружу.. а сам изменяет когда и что нужно.. Он может содержать в себе эту композицию.. Добавлено через 1 минуту и 58 секунд
форме (или его окну).. Добавлено через 3 минуты и 23 секунды
у Вас плеер и енеми самодостаточные ? т.е логика их поведения обслуживается ими же ? сомневаюсь.. если сомнения верны, то схема не правильна.. |
||||||
|
|||||||
TGrey |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Ну так тогда же будет та же связь, что преподаватель забраковал, карта знает о игроке, а игрок знает о карте...
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
т.е возможны только два варианта ? и больше никак ? Добавлено через 3 минуты и 24 секунды кстати насчет Player.. тот Player, o котором идет речь, это всего лишь фишка на поле.. класс осуществляющий управление этой фишкой , это другая сущность.. мне кажется Вы пытаетесь сделать из них единое целое.. |
|||
|
||||
TGrey |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
В том то и дело, что я не уверен, что ему надо сделать, он сказал, что это не верно, что карта знает о игроке, а игрок знает о карте. Не смотря на это я вот сижу обдумываю, как сделать эти классы независимыми, но не вижу смысла в том, что игрок есть, но он не знает ничего о карте, на которой должен ходить. Это не логично. Все что мне пришло в голову убрать все методы "Перехода" с класса Игрока и засунуть их в другой. А потом по средствам того если переход возможен, то вызывать некие методы, которые будут изменять уже значения полей Игрока. Вот собственно единственный вариант, который мне пришел в голову, чтобы сделать Игрока не зависимым от карты.
К этом как раз и подходит, то предложение, что Гейм является контейнером для всех, при этом Игрок знает о карте, но карта не знает о игроке. Это как бы даже логически подходит. Тогда же остается нужда в доп. классе который должен знать и о Карте и о Игроке, чтобы проверять возможность Ходьбы и изменять данные на карте и чтобы изменять поля Игрока. ![]() |
|||
|
||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
если игрок - эта фишка на поле, как уже было выше сказано, то согласен что неверно.. Добавлено через 56 секунд не путайте игрока и фишку игрока.. Добавлено через 2 минуты и 29 секунд
является не контейнером.. а обслуживателем единой логики... Добавлено через 4 минуты и 41 секунду
это и есть гейм .. какого игрока ? фишку он меняет.. а состояние управляющего находится вне ведомости класса игры.. Добавлено через 5 минут и 10 секунд опишите игру, которую Вы делаете, чтоб можно было подсказать точнее.. |
||||||
|
|||||||
TGrey |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
А какая разница между игрок\фишка игрока?
Игра Пак-Мен. В моем варианте: CMap - загружает карту из файла(0 и 1), рисует карту. Player - методы обработки ходьбы игрока(если может походить по карте и там есть монетка по значение в массиве меняется на 2) Enemy - методы обработки ходьбы врага. Структура такова
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
в том фишка лежит себе где нибудь и никого не трогает.. зато всем контроллерам видно где и что лежит и двигают что им можно, когда им нужно и можно.. ![]() Добавлено через 5 минут и 1 секунду ![]() ![]() ![]() ![]() свой вариант напишу попозже..сейчас нет достаточно времени.. |
|||
|
||||
TGrey |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Что-то я вообще потерялся...
Хорошо выходит, что мой Класс Плеер - фишка. Значит он ничего сам делать не должен и ни о чем знать не должен тоже. В это же время, если учитывать новую структуру классов, то класс Гейм - это контроллер, который будет пытаться перейти в карте и если это возможно, тогда он двигает Игрока(он же Фишка). Тогда игрок ничего не соображает вообще, методов в нем выходит вообще не будет, только поля для очков, жизней и другие параметры. Значит Гейм - управляет переходами, содержит Карту, содержит Игроков. Игрок вообще ничего не знает. Карта тоже ничего не знает, содержит только массив с самой картой. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
приступим...
нам нужно : карта местности активные фишки (игрок, враги) пассивные фишки (подарки) 1. фишки могут быть расположены на карте местности, а могут просто хранить координату на поле, при том второе имеет предпочтение ввиду экономичности.. 2. передвижение, разбор столкновений, и др подобное осуществляет контролер игры.. 3. игрок может изменить направление принадлежащей ему фишки..(*тут пересечение с пунктом 2.) 4. игра может находиться в разных игровых состояниях (start, play, finish) 5. отрисовка должна осуществляться внешним объектом, на основании общей информации.. Добавлено через 1 минуту и 17 секунд теперь надо подумать как это все состыковать.. |
|||
|
||||
TGrey |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Ну пассивных фишек нет) Без них обойдусь.
В данный момент есть только Игроки и Враги которые хранят в себе координаты на поле. Методе столкновений и переходов я уже написал, нужно только перенести их в Game(он же контроллер). Тогда выходит, что Гейм будет вызывать функции Перехода, в случае "съедания" монетки изменять данные в массиве Карты и изменять координаты Игроков\Врагов. А вот на счет отрисовки, внешний объект будет создаваться на форме, как отдельный класс, который рисует карту из заданного массива. Тогда выходит что он должен будет получать класс Гейм и из него выбирать массив с Картой. Как-то так? ![]() |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
отвлекли немного.. вот пока часть наброска..
|
|||
|
||||
TGrey |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Спасибо, но мне не столь важен код, как сама диаграмма) Я потом под нее свой код подгоню.
|
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ну так монетки и подразумевались в роли пассивных фишек ![]() Добавлено через 1 минуту и 47 секунд
для отрисовки (в принципе) нужна не толька Карта, а вся информациядоступная через game.. Добавлено через 2 минуты и 47 секунд
мне просто легче кодом выражаться.. с uml я не сталкивался ![]() Добавлено через 5 минут и 29 секунд метод формы вызывает render отрисовщика, передавая в него контекст для рисования и ссылку на игру.. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |