Помощь - Поиск - Пользователи - Календарь
Полная версия: Уголки: игра с компьютером
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
Moony
Есть такое неслабое задание - реализовать игру уголки с компьтером причем на 3-х уровнях сложности. В голове даже мыслей нет на счет вариантов решения. Если бы кто нибудь сможет помочь хоть чем то, буду очень благодарен. Сам пока сделал только игру вдвоем.
Archon
В Игромании и ЛКИ хорошо писали на эту тему, если интересно, могу поискать номер...
Moony
конечно интересно, поищи пожалуйста
Archon
ЛКИ №35 октябрь 2004

В кратце изложу суть статьи:

На мой взгляд тебе больше подходит перебор с оценкой, про него и раскажу.
1. Одноходовый перебор
Перебираем все возможные ходы и для каждой получившейся позиции находим (специальной функцией) "качество" позиции, выраженное целым числом. Лучшим ходом считаем тот, оценочное число которого выше.

Как его считать, число это? Например сложить значения "веса" каждой своей шашки. Ну насколько я помню правила игры "уголки", наибольшим весом будет обладать шашка, достигшая цели - противоположного угла. И далее вес уменьшается, в зависимости от удалённости цели.
К весу шашки также можно добавить число шагов, которое она сможет сделать на следующем ходу (полезных шагов естественно, приближающих к цели).
Затем вычитаем из общей суммы аналогичную сумму у противника и получаем качество позиции.

2. Многоходовый перебор
Цитирую:
"Очевидно, что такой путь требует, во-первых, чтобы ИИ думал не только за себя, а ещё и за игрока "с той стороны".
Выбирать один-единственный вариант хода мы уже не можем: если все альтернативы мы отбросили сразу, что нам добавит обсчёт следующего хода? Нам бы хотелось выбирать первый ход с учётом второго. А значит, надо оставить хотя бы несколько вариантов, скажем 3-4.
Кроме того, есть опасность, что оставленные варианты будут очень похожи друг на друга, и действительно разных первых ходов в списке не окажется; надо добавить проверку на одинаковые ходы."

От себя добавлю, что многоходовый перебор подходит лучше:
* Можно легко сделать уровни сложности (первый - глубина просчёта 1 ход, второй - 1 свой ход + 1 противника + 1 свой = 3 хода, третий - соответственно 5 ходов)
* Вариантов ходов в уголках не так уж много. Не думаю, что для скорости придётся отбрасывать варианты и оставлять только 3-4.
* Поэтому и проверку на одинаковость делать не нужно.

Электорнной версии статьи я, к сожалению, не нашёл.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.