К основному контенту

Компьютерная реализация настольной игры "Мыслитель"

На данной фотографии настольная игра "Мыслитель" советского производства. Это логическая игра для двух игроков.

Рис. 1. Настольная игра "Мыслитель".


Правила игры. Каждый игрок загадывает четыре различных цвета из шести возможных. Цель игрока — отгадать загаданный противником набор цветов. Игрокам даётся 6 попыток.
За каждую попытку ставится "оценка": если совпали и цвет, и позиция, то ставится черный колышек, а если совпал цвет, но не совпала позиция, то ставится белый колышек.

Компьютерная реализация игры "Мыслитель". Разработана компьютерная программа, позволяющая играть в эту игру. На рисунке изображен снимок экрана.

Рис. 2. Снимок экрана.

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

Компьютер играет по следующему алгоритму. Первый ход компьютер делает случайным образом. Следующие ходы компьютер делает по методу минимакса. Компьютер пробует делать все возможные ходы. Для каждого хода вычисляется максимальное возможное количество комбинаций цветов, которые мог загадать пользователь, и выбирается ход, для которого это количество минимально.
Было проведено испытание данного алгоритма. Загадывались все возможные комбинации цветов (всего комбинаций), и вычислялось, за сколько ходов компьютер отгадает загаданную комбинацию. Оказалось, что компьютер всегда отгадывает комбинацию максимум за шесть ходов; в 12 случаях компьютеру понадобилось 2 хода, чтобы отгадать комбинацию, в 59 случаях — 3 хода, в 175 случаях — 4 хода, в 105 случаях — 5 ходов и в 9 случаях — 6 ходов.

Программу можно скачать здесь.

Кстати, интересен тот факт, что мне пришлось сделать две разные версии программы: одну для Windows XP (или более ранних версий), а другую - для Windows 7 (возможно, эта же версия подходит для Windows Vista).
Дело здесь в том, что программу я написал на Delphi, и отображение графических элементов одной и той же программы, написанной на Delphi, в разных версиях Windows может происходить по-разному.

Комментарии

Глеб Гренкин написал(а)…
В усложнённом варианте игры "Мыслитель" загадывается последовательность из 4-х цветов (цвета выбираются из 6-ти вариантов), причём цвета могут повторяться.
Известный учёный Дональд Кнут предложил стратегию игры в эту игру, при которой, как показал Д. Кнут, нужно не более 5 попыток, чтобы отгадать любую комбинацию, и в среднем 4,34 попыток для отгадывания.
Источник: раздел Википедии на русском языке, статья "Быки и коровы": http://ru.wikipedia.org/wiki/Быки_и_коровы.

Таким образом, моя игра играет по неоптимальной стратегии. Но так, может быть, даже интереснее играть с компьютером, потому что, если бы компьютер играл по оптимальной стратегии, у него было бы сложнее выиграть.
Глеб Гренкин написал(а)…
Исходный код можно посмотреть здесь:
http://github.com/grenkin/thinker
Глеб Гренкин написал(а)…
Дело может быть даже не в версии Windows, а в разрешении экрана.
Глеб Гренкин написал(а)…
Сейчас аналогичную настольную игру продают под названием "Дети Шпиёны": http://tesera.ru/game/783813/