Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диаграмма классов. Нужен совет. 
:(
    Опции темы
TGrey
Дата 31.12.2010, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 1.12.2007

Репутация: нет
Всего: 1



Хорошо, ну так сама суть, Диаграмма классов приведенная мною соответствует тому, что мы пытаемся сделать то?)

Кстати тогда выходит, что Игроку нет смысла знать о Карте, если всем будет заправлять Гейм.


Вообще моя задача, не геймдев) Это просто я выбрал такую тему, задача выполнить это все в ООП. А именно построить правильное взаимодействие между классами) Потому мне не важно, что можно дописывать и как было бы точнее с точно зрения Создания игр. Просто надо, эти классы, как-то упорядочить и сделать из них каркас.

Это сообщение отредактировал(а) TGrey - 31.12.2010, 13:35
PM MAIL   Вверх
toxx
Дата 31.12.2010, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 2
Всего: 13



TGrey
помоему вы занимаетесь не ОО Проектированием, а ОО Анализом(если строите взаимодействие м\у классами)
PM MAIL   Вверх
mes
Дата 31.12.2010, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(TGrey @  31.12.2010,  11:55 Найти цитируемый пост)
стати тогда выходит, что Игроку нет смысла знать о Карте, если всем будет заправлять Гейм.

не всем, а только сменой кадров и расчетом вытекающих коллизий и т.п.




--------------------
PM MAIL WWW   Вверх
TGrey
Дата 31.12.2010, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 1.12.2007

Репутация: нет
Всего: 1



Ну да уже Анализом) Мое проектирование не прошло, приходится заново анализировать.

Почему сменой кадров, это как раз мне и сказали что класс не должен выполнять задания с союзом И. Ну в смысле расчет коллизий И смена кадров. Поэтому я хочу сделать для смены кадров другой класс.
Ну а в общем я же верно понял, что Игрок не будет знать о Карте?
PM MAIL   Вверх
xvr
Дата 31.12.2010, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



2 ТС: посмотрите в сторону MVC (Model/View/Controller) концепции. То, что у вас сейчас получается (стараниями mes) замечательно в эту концепцию укладывается. При этом сама концепция MVC налагает некоторые ограничения на функциональность и взаимодействие частей. Эти ограничения могут помочь и в вашем анализе  smile 
PM MAIL   Вверх
TGrey
Дата 31.12.2010, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 1.12.2007

Репутация: нет
Всего: 1



Ой та мне бы уже хоть так сделать)) Чтобы было по велению преподавателя))
PM MAIL   Вверх
xvr
Дата 31.12.2010, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(TGrey @  31.12.2010,  14:51 Найти цитируемый пост)
Ой та мне бы уже хоть так сделать

Да уж.
 smile 
- Девушка, можно вас на 5 минут?
- А успеете, за 5 минут?
- Долго ли умеючи!
- Умеючи, как раз долго...
- Ну тогда хоть как нибудь ...
- А на 'как нибудь' и муж есть.

Цитата(TGrey @  31.12.2010,  14:51 Найти цитируемый пост)
Чтобы было по велению преподавателя))
Наверное он не просто так повелел, видимо на то были основания  smile 

PM MAIL   Вверх
TGrey
Дата 31.12.2010, 15:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 1.12.2007

Репутация: нет
Всего: 1



Я не верно выразился, мне не все равно, как сделать. Просто та структура, что я сделал не подошла и сказали переделать с такими-то условиями. То, что мы общими усилиями тут вывели, как раз вроде подходит этим условиям) Поэтому я и говорю, что хоть так бы уже сделать, потому что вот сегодня Новый Год уже, а сдать надо на со следующей недели. Вот в этом и выражается "хоть так сделать".

Всех С Наступающим. Спасибо за помощь) smile 
Накуролесю по этой схеме классы и пойду сдавать) 
PM MAIL   Вверх
toxx
Дата 31.12.2010, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 2
Всего: 13



TGrey
Оливье нужно стряпать, а не думать что сдавать)))
с наступающим вас тоже =)
PM MAIL   Вверх
mes
Дата 31.12.2010, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(TGrey @  31.12.2010,  13:06 Найти цитируемый пост)
 класс не должен выполнять задания с союзом И

тут надо понимать, что под этим подразумевается.. да не должен два не связанных действия..
но есть к примеру координирующие классы, которые в принципе только и занимаются союзом "И" smile

Цитата(TGrey @  31.12.2010,  13:06 Найти цитируемый пост)
 Ну в смысле расчет коллизий И смена кадров. 

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

Добавлено через 3 минуты и 11 секунд
забудем для начала об управлении.. считаем что делаем не игру, а просто типо видеоролик smile

Добавлено через 6 минут и 27 секунд
у нас есть игрок, враги, подарки, каждый из которых может быть в разных состояних..
фактически игрок враг и подарок ничем не отличается - назовем любого из них фишкой.. 
но фишки должны отличаться друг от друга... то есть должны отличаться характрером.. 
при этом игроку (как и всем остальным) может принадлежать несколько характеров (не одновременно)..

Добавлено через 7 минут и 17 секунд
Код

struct chip
{
    point position;
    character kind;
};



Добавлено через 11 минут и 32 секунды
характер это некая полиморфная единица, от реального типа которого зависит поведение.. 

самый простой способ разгрузить через enum ..
Код

enum character  { player_peaceful, player_aggressive, enemy_aggressive, enemy_cowardly, surprise };


Это сообщение отредактировал(а) mes - 31.12.2010, 16:29


--------------------
PM MAIL WWW   Вверх
TGrey
Дата 31.12.2010, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 1.12.2007

Репутация: нет
Всего: 1



Ну так тогда же я не вижу ничего плохого, что у меня класс Карты рисовал ее))
Видеоролик) Хорошо.
Класс Гейм будет дергать за ниточки. Тыкаю по клавиатуре, вызываются методы Гейма для смены направления, проверяется можно ли походить, скушать монетку, удариться в стену или попасть на врога, при необходимости изменяются данные на Карте если "съели" монетку, изменяются координаты Фишек.
А тут я так понял, можно либо посылать сообщение Драверу, что типа все уже изменили ходы окончены, нужна перерисовка. Либо через одно место, засунуть Перерисовку в Таймер и пусть себе рисуется каждые 30млсек)) Вот вроде и построение ролика)?
PM MAIL   Вверх
mes
Дата 31.12.2010, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



чуть посложней отразить тип на таблицу свойств..

так
Код

struct character {
 struct traits {
  // данные для задания поведения
 };

 virtual traits get_traits () =0;
};

или так :
Код

struct character_traits {
  // данные для задания поведения
};

character_traits player_peaceful = {..};
character_traits enemy_agressive = {};


Добавлено @ 16:47
Цитата(TGrey @  31.12.2010,  15:43 Найти цитируемый пост)
. Либо через одно место, засунуть Перерисовку в Таймер и пусть себе рисуется каждые 30млсек)) 

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

Добавлено @ 16:49
Цитата(mes @  31.12.2010,  15:29 Найти цитируемый пост)
характер это 

вобщем как выразить характер Вам решать.. но думаю описывать характер набором данных слишком уж для вашей задачи..
т.е. напрашивается цифровой идентификатор характера.. (т.е. енум)

Добавлено @ 16:53
итак у нас есть набор фишек с разным характером..
теперь надо их немножко расшевилить..
в плайинге перемещаем их (пока произвольно) .. назовем эту функцию produce_frame.. 
она будет вызываться извне, чтоб адаптировать скорость игры под компьютер..

Добавлено @ 16:55
сейчас фишки бегают по пустому  полю,для того, чтоб они бегали по дорожке,
добавим карту местности.. Пусть будет битовый (для простоты байтовый) массив где каждая ячейка показывает пусто или нет.. 
теперь в produce_frame мы должны учитывать возможность перемещения только по пустым ячейкам.. 


Это сообщение отредактировал(а) mes - 31.12.2010, 17:17


--------------------
PM MAIL WWW   Вверх
TGrey
Дата 31.12.2010, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 1.12.2007

Репутация: нет
Всего: 1



Да все бы хорошо, я не совсем понимаю, зачем описывать эти поведения для фишек? У меня всего-то 2 фишки)) А теже Монетки это не объекты и ничего такого, просто 1 в массиве с картой, при переходе на которую значение меняет на 2. Самый элементарный способ наверно)
PM MAIL   Вверх
mes
Дата 31.12.2010, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



теперь нужно добавить осмысленности.. заводим класс осуществляющие интеллект... 
пусть будут gui_player, player_auto, enemy_stupid, enemy_smart..

так же нам нужен не только управляющий, а производящий объекты.. допустим фабрика.. 
к этому вернемся чуть позже..

Добавлено через 3 минуты и 43 секунды
Цитата(TGrey @  31.12.2010,  15:56 Найти цитируемый пост)
А теже Монетки это не объекты и ничего такого, просто 1 в массиве с картой, при переходе на которую значение меняет на 2. Самый элементарный способ наверно) 

можно и так.. значит фишек меньше... я пока размышляю в общем, чтоб самому представить..а уже потом можно будет под Вас адаптировать.. 
в принципе значение на карте, это таже фишка только наложенная на карту.. также как и забор.. 
и в принципе для всего (и для фишек и для марок на поле) можно использовать один и тот же набор характеров..

Добавлено через 4 минуты и 5 секунд
но это уже детали конкретного реализации..

Добавлено через 5 минут и 29 секунд
Цитата(TGrey @  31.12.2010,  15:56 Найти цитируемый пост)
 А теже Монетки это не объекты и ничего такого, 

такой подход Вам будет мешать... Объект просто выражен некоторым значением..

Добавлено через 6 минут и 23 секунды
хм сбился.. сейчас перечитаю чего мы там написали.. 



--------------------
PM MAIL WWW   Вверх
TGrey
Дата 31.12.2010, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 1.12.2007

Репутация: нет
Всего: 1



Да уж)) Не думал, что так пустится тема)) Скоро можно будет собрать готовый код)))

Дело в том, что это все у меня уже написано, АИ, Коллизии, Смена направления, изменение данных)) Мне бы только правильно по полочкам разложить обязанности))
Цитата

такой подход Вам будет мешать... Объект просто выражен некоторым значением..

Ну почему же мешать) Мне же не надо мега продвинутую и супер запрограммированную игру) Обычная примитивная реализация подобия игры.
Были и другие работы которые вообще не имели отношения к игре. Вот мой однокурсник сдавал Фракталы. У него вышло полная чушь по сути) Просто бессвязные классы) Поэтому и приняли т.к. в диаграмме классов там просто не как было ошибиться)) В моем же случае немного не корректно распределены обязанности и их нужно исправить.

Это сообщение отредактировал(а) TGrey - 31.12.2010, 17:12
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1049 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.