Консультация № 173620
23.10.2009, 23:31
0.00 руб.
0 1 0
Здравствуйте, уважаемые Эксперты!

Существует игра под названием "Рэндзю" - модификация крестиков-ноликов. Суть игры: на игровом поле 15*15 два игрока поочерёдно делают ходы. Один ставит крестики, другой - нолики. Выигрывает тот игрок, который первым создаст непрерывный ряд из пяти (или более) своих знаков по любой вертикальной, горизонтальной или диагональной линии. Если после очередного хода занято всё поле, но выигрышного ряда так и не образовалось, то признаётся ничья.

Я хочу написать программу, которая будет играть в Рэндзю против человека. Необходимо составить алгоритм поиска (отбора) одного или нескольких наилучших ходов. Наилучшими считаются:
1) ходы, гарантирующие наибыстрейший выигрыш (или хотя бы выигрыш вообще);
2) при невозможности гарантировать выигрыш - ходы, приводящие к ничьей;
3) при невозможности гарантировать выигрыш или ничью - ходы, максимально затягивающие партию в надежде, что противник (человек) всё-таки допустит ошибку и даст возможность программе выиграть.
Кроме того желательно (но не обязательно) выбирать среди наилучших ходов наиболее агрессивные, при которых противник (человек) вынужден защищаться, теряя инициативу и не имея возможности строить свои комбинации (это тоже может ускорить выигрыш). Повторяю - этот пункт необязателен.

Программу буду писать на Delphi. Необходим логический (или математический) алгоритм анализа ситуации на игровом поле, выявляющий наилучшие ходы; программировать буду сам. Впрочем, варианты программного кода тоже рассмотрю.

Заранее благодарен за любую помощь.

Обсуждение

Неизвестный
23.10.2009, 23:42
общий
Да, вот ещё что: эксперту, давшему наилучший ответ (если будет законченный алгоритм), переведу 100 рублей в качестве вознаграждения.
Форма ответа