Для розваги я намагаюся написати одну з улюблених настільних ігор сина як програмне забезпечення. Зрештою, я розраховую на те, щоб побудувати поверх нього інтерфейс WPF, але зараз я будую машину, яка моделює ігри та їх правила.
Роблячи це, я постійно бачу проблеми, які, на мою думку, є спільними для багатьох настільних ігор, і, можливо, інші вже вирішили їх краще, ніж я.
(Зверніть увагу, що ШІ для гри, і схеми навколо високої продуктивності мені не цікаві.)
Поки що мої шаблони такі:
Кілька незмінних типів, що представляють сутності в ігровій коробці, наприклад, кістки, шашки, картки, дошка, місця на дошці, гроші тощо.
Об’єкт для кожного гравця, який містить ресурси гравців (наприклад, гроші, рахунок), їх ім’я тощо.
Об’єкт, що представляє стан гри: гравці, хто зараз, розклад макетів на дошці тощо.
Автомат стану, який управляє послідовністю поворотів. Наприклад, у багатьох іграх є невелика попередня гра, де кожен гравець котиться, щоб побачити, хто йде першим; це стартовий стан. Коли починається черга гравця, спочатку вони котяться, потім рухаються, потім вони повинні танцювати на місці, потім інші гравці вгадують, до якої породи курей вони, потім вони отримують бали.
Чи є якийсь рівень техніки, яким я можу скористатися?
EDIT: Одне, що я недавно зрозумів, - це те, що стан гри можна розділити на дві категорії:
Стан ігрового артефакту . "У мене 10 доларів" або "моя ліва рука синя".
Стан послідовності гри . "Я двічі кинув дублі; наступний садить мене до в'язниці". Тут може мати сенс державна машина.
РЕДАГУВАТИ: Те, що я насправді шукаю тут, - це найкращий спосіб реалізувати багатокористувацькі покрокові ігри, такі як Шахи, Ерудит або Монополія. Я впевнений, що міг би створити таку гру, просто опрацювавши її, починаючи до кінця, але, як і інші шаблони дизайну, ймовірно, є кілька способів зробити все набагато плавніше, що не очевидно без ретельного вивчення. Це те, на що я сподіваюся.