Дизайн карточной игры

Я создаю многопользовательскую карточную игру. У меня есть два основных класса:

  • Игрок - представляет игрока в игре.

  • Менеджер - это менеджер игры. Он является синглтоном и содержит основную колоду карт и всех игроков.

Мой вопрос в том, что является лучшим дизайном для отношений между Менеджером и Игроком. Я думаю, что Менеджер должен знать всех игроков, но игроки не должны его знать... потому что если однажды я захочу использовать класс игроков для других карточных игр, это будет очень общим.

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

Какой дизайн самый лучший?

1 ответ

Решение

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

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

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

... и ты продолжаешь так думать. Помните об основных принципах OO, таких как SOLID, наиболее важном из всех принципов единой ответственности.

Руководство по шаблонам проектирования, которое может дать вам идеи, см. В разделе Шаблоны проектирования GoF. Для получения дополнительных примеров найдите некоторые исходные коды игр в Интернете и изучите их. Вы получите некоторые идеи, и от них выиграет ваш дизайн.

Другие вопросы по тегам