-
Notifications
You must be signed in to change notification settings - Fork 0
Mastermind
nergal-perm edited this page Apr 5, 2021
·
1 revision
Игра (Рефери) загадывает четырехзначное число с уникальными цифрами. Игрок должен угадать загаданное число за минимальное число попыток. Каждая попытка игрока состоит также из четырехзначного числа с уникальными цифрами. В ответ на каждую попытку Игра возвращает ее результат в виде двух чисел:
- число "Быков" - количество угаданных цифр И их позиций одновременно;
- число "Коров" - количество угаданных цифр, НО НЕ их позиций.
Пример:
Загадано число 1234. Попытки игрока:
-
4261
-> 1 бык (двойка на второй позиции), 2 коровы (4 и 1 есть в загаданном числе, но стоят на других позициях) -
1246
-> 2 быка (1 и 2 на своих местах), 1 корова (четверка стоит не на своем месте)
ID | Название | Тип значения | Описание |
---|---|---|---|
С01 | Ведущий игрок | Игрок | Игрок, загадывающий число в этом раунде игры |
С02 | Активный игрок | Игрок | Игрок, который должен совершить Действие в текущем состоянии игры |
С03 | Загаданное число | Число | Четырехзначное число, загаданное Ведущим игроком, цифры в числе уникальны |
С04 | Текущая попытка | Число | Четырехзначное число, предложенное отгадывающим игроком |
С05 | Результат текущей попытки | Коллекция | Два числа: быки и коровы; сообщает Ведущий игрок в ответ на попытку |
С06 | История попыток | Коллекция | Список пар "Попытка - Результат", предложенных в текущем раунде игры |
Также состояние должно хранить общий список игроков и, возможно, очередность их ходов, но это кажется общей для всех игр информацией.
ID | Параметр | Характер изменения | Действия | Описание |
---|---|---|---|---|
ИС01 | С01 | Следующее значение | Д06 | Смена Ведущего игрока (в начале игры или следующего раунда) |
ИС02 | С02 | Следующее значение | Д01, Д02, Д03 | Смена Активного игрока (переход хода) |
ИС03 | С03 | Значение аргумента действия | Д01 | Сохранение загаданного числа |
ИС04 | Очистка | Д06 | Очистка загаданного числа в начале игры или раунда | |
ИС05 | С04 | Значение аргумента действия | Д02 | Сохранение текущей попытки |
ИС06 | Очистка | Д03 | Очистка текущей попытки при записи попытки в историю | |
ИС07 | С05 | Значение аргумента действия | Д03 | Сохранение ответа на попытку |
ИС08 | Очистка | Д03 | Очистка ответа на попытку при записи попытки в историю | |
ИС09 | С06 | Добавление элемента | Д03 | Запись попытки в историю |
ИС10 | Очистка | Д06 | Очистка истории попыток в начале новой игры / раунда | |
ИС11 | Значение параметра С01 | Д06 | Передача хода Ведущему игроку в начале игры или раунда |
ID | Название | Тип / Фаза игры | Метаданные | Влияние на состояние |
---|---|---|---|---|
Д01 | Загадать число | Инициализация | 4 разные цифры | ИС03, ИС02 |
Д02 | Попытаться отгадать число | Ход | 4 разные цифры | ИС05, ИС02 |
Д03 | Ответить на попытку | Ход | 2 числа (быки и коровы) | ИС07, ИС09, ИС06, ИС08, ИС02 |
Д04 | Опубликовать результат игры | Завершение | Количество попыток | N/A |
Д05 | Просмотреть историю попыток | Ход | N/A | N/A |
Д06 | Начать новый раунд игры | Завершение | N/A | ИС04, ИС10, ИС01, ИС11 |
Фаза | Игрок | Действие |
---|---|---|
Предпроверка | - | - |
Ход | Активный | Д02. Попытаться отгадать число |
Ход | Оппонент | Д03. Ответить на попытку |
Постпроверка | Рефери | Проверка завершения игры (загаданное число угадано) |
На примере игры одного игрока против игры. В этом случае Активный игрок всегда один и тот же (человек), роль Оппонента играет игра.
Фаза | Повторяемость | Тип | Содержание |
---|---|---|---|
Инициализация | Однократно | Действие | Д01. Загадать число |
Игра | Цикл | Ход | Х01. Обычный ход |
Завершение | Однократно | Действие | Д04. Опубликовать результат игры |