Ради интереса я пытаюсь написать одну из любимых настольных игр моего сына в виде программы. В конце концов, я собираюсь построить на его основе пользовательский интерфейс WPF, но сейчас я создаю машину, которая моделирует игры и их правила.
По мере того как я это делаю, я продолжаю видеть проблемы, которые, как мне кажется, являются общими для многих настольных игр, и, возможно, другие уже решили их лучше, чем я.
(Обратите внимание, что ИИ, чтобы играть в игру, и шаблоны, связанные с высокой производительностью, мне не интересны.)
Пока что мои шаблоны:
Несколько неизменяемых типов, представляющих объекты в игровом поле, например, кости, шашки, карты, доску, места на доске, деньги и т. Д.
Объект для каждого игрока, который содержит ресурсы игроков (например, деньги, счет), их имя и т. Д.
Объект, который представляет состояние игры: игроков, чья очередь, расположение фигур на доске и т. Д.
Конечный автомат, который управляет последовательностью ходов. Например, во многих играх есть небольшая предварительная игра, где каждый игрок делает бросок, чтобы увидеть, кто ходит первым; это начальное состояние. Когда начинается ход игрока, сначала они катятся, затем двигаются, затем они должны танцевать на месте, затем другие игроки угадывают, к какой породе они принадлежат, и получают очки.
Могу ли я воспользоваться каким-либо известным уровнем техники?
РЕДАКТИРОВАТЬ: Одна вещь, которую я недавно понял, заключается в том, что состояние игры можно разделить на две категории:
Состояние игрового артефакта . «У меня есть 10 долларов» или «моя левая рука на синем».
Состояние игровой последовательности . «У меня дважды выпадал дубль; следующий бросил меня в тюрьму». Здесь может иметь смысл конечный автомат.
РЕДАКТИРОВАТЬ: Я действительно ищу здесь лучший способ реализовать многопользовательские пошаговые игры, такие как Chess, Scrabble или Monopoly. Я уверен, что смогу создать такую игру, просто проработав ее от начала до конца, но, как и в случае с другими шаблонами проектирования, вероятно, есть некоторые способы сделать все гораздо более плавными, что неочевидно без тщательного изучения. Я на это надеюсь.