Я реализую небольшую игру в терминале, используя C#, игру «четыре в ряд». Я покончил с реализацией (игра воспроизводится), но я хочу немного переработать ее в отношении объектно-ориентированного дизайна.Дизайн класса для маленькой игры
скажем, у меня есть несколько классов: игра, доска, игрок, сообщение и т. Д., Хранящие информацию об ассоциировании объектов.
Как и в случае с текущим дизайном и реализацией, объект игры состоит из объекта Board, нескольких других свойств игры (текущий цвет, следующий цвет, currentTurn и т. Д.) И список игроков, на которые ссылаются объекты Player. Игрок может быть либо пользователем, либо процессором, в зависимости от того, какой переход происходит от пользовательского ввода или вычисляется каким-либо AIPlayer соответственно (для этого я создаю класс AIPlayer, наследующий от Player, и соответственно переопределяет метод MakeAMove().
Другие проектные решения включают в себя наличие классов Server/Client с функцией main() для запуска игры, получения данных сокетов и отображения уведомлений, классов Client/ServerHandler для обработки игровой логики и вызова других классов выше.
Ответственность за принятие решения если ход действителен или он получает очко, тем не менее, остается класс Game, который, очевидно, должен управлять объектом Board.
Теперь я решаю, что происходит, когда игрок делает ход. Таким образом, я предполагаю, что 2 подходов к проектированию для этого:
Объекта игры принимает входной и изменяет его собственное состояние (включая обновление его игроки должны один заработает точку) как Игра состоит из списка объектов игрока ,
Это объект игрока, который получает его ход (ввод пользователя или вычисление процессора) и обновляет состояние игры. При этом нет никакой связи между игроком и игрой, и игрок обновляет свой счет в соответствии с тем, что возвращается методом объекта Game.
Мой вопрос: Моя игра работает, используя (1), но думать над тем, что если (2) является более подходящим (т.е. больше OO чиста, как есть меньше связь между Игроком и игры). Но если это (2) использовать, то как мне связать игру и игрока (как я должен связать точку игрока с игрой)?
Каков ваш вопрос? –
@WinterMute Прежде чем рекомендовать что-нибудь, прочитайте раздел справки на этом веб-сайте. Это не касается темы обзора кода, так как нет кода для проверки. Из того, что я могу прочитать, код еще не закончен, а O.P спрашивает, как что-то писать. Это три причины не по теме. –
http://gamedev.stackexchange.com/ – Bauss