Соревнование программ, играющих в крестики-нолики
Для чего это нужно
Когда есть несколько оценочных функций, интересно проверить каждую "в боевых условиях". Поэтому, полезно иметь некоторую систему, проводящую турниры между игроками-программами (или позволяющую лично сразиться с выбранным противником). Просмотр окончаний партий "за 5 ходов до мата" может сильно помочь в нахождении слабых мест выбранной эвристики.Предполагаемый способ реализации
Возможно, систему стоит разбить на 2 части:- Программа-тестер. Нужна для проведения боя между двумя соперниками. Берет на себя функции ограничения времени/хранение истории игр/рассчет турнирной таблицы. Эта часть системы, похоже, уже написана.
- Java-applet - графическая оболочка. С ее помощью можно будет "заказать" игру между 2-мя соперниками, добавить новую программу в систему, и т.п.
Альернативные способы реализации
- Использовать Java для создания программы-тестера. Минусом данного способа является низкая производительность, которой может не хватить, для достижения "разумного" времени обдумывания одного хода.
- То, что я предлагаю целиком пишется на Java и целиком клиентская это можно не возится с сервером
а все сделать средствами twiki.
Просто формулируется интерфейс для игрока TicTacToePlayerInterface?, а пользователи twiki
прикрепляют к определенной страничке twiki ( TicTacToeDesk? ) свои классы,
которые мплементируют этот интерфейс.
Кроме того пишется апплет-судья, он помещается на страничке TicTacToeDesk?. У него есть два поля ввода, в которых можно указать названия классов игроков эти классы он ищет среди прикрепленных к страничке. Есть кнопка Start. После нажатия на неё появляется игровое поле. На котором есть кнопка Next команда игроку сделать ход, и кнопка "играть до конца". Таким образом, мы получаем простенькую online штуку, чтобы смотреть, как разные игроки друг с другом играют.
Другой аплет Турнир. Он смотрит какие есть классы игроков среди прикрепленных к страничке TicTacToeDesk? и стравливает их друг с другом. Он проводит круговой турнир откображая на ход игр, в конце турнира (каждый сыграл с каждым как крестиком, так и ноликом) он предлагает сохранить таблицу в текстовый файл или даже сам по http пытается сохранить специальную страничку twiki ContestResultTable? (просто обращается к /cs.mipt.ru/twiki/bin/save со специальными параметрами) -- эту страничку можно редактировать только определенному юзеру, поэтому появляется предложение ввести пароль, который знающий человек введет правильно и эта страничка с таблицой результатов обновится. Конечно секьюрити никакой, но нам пока этого не нужно.
-- ArtemVoroztsov - 19 Mar 2004