Пт. Ноя 22nd, 2024

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

То об­стоятельство, что правила принятия решений в ифах являются эмпирическими, могут отличаться у разных игроков и меняться по ходу ифы, делает увлекательным процесс разработки подобных программ. При разработке компьютерных иф практически не удается обойтись без отладочных экспериментов. Несмотря на то что разработчики хорошо знакомы с играми, которые они про­граммируют, первоначально сформулированные ими правила принятия решений или оценочные функции, как правило, не позволяют компьютерному ифоку играть на уровне человека. Следует отметить, что большинство разработчиков иф считает делом чести довести квалификацию своего компьютерного игро­ка хотя бы до собственного уровня. Для этого в процессе тестиро­вания и доводки экспериментально подбираются структура и па­раметры оценочных функций, вырабатываются оригинальные стратегии и формулируются различные наборы правил.

В качестве примера разработки рассмотрим старинную рус­скую карточную ифу в «Подкидного дурачка». Правила этой игры хорошо известны, поэтому не будем их описывать. Так как коли­чество возможных в ифе ситуаций достаточно велико, а возмож­ные действия противников плохо предсказуемы, попытки опреде­лить путь достижения цели компьютерного ифока в пространст­ве состояний задачи не имеют смысла. В данном случае желатель­но выработать принципы оценивания текущей ситуации, позво­ляющие судить о степени приближения к конечной цели, которая заключается в том, чтобы первому среди всех ифоков остаться без карт на руках. Стремление к минимизации количества карт в процессе игры далеко не всегда обеспечивает конечный успех ифока, поэтому представляется целесообразным ввести понятие относительного потенциала игрока, который следует поддержи­вать максимально высоким в течение игры.

Потенциал мож­но вычислить по следующей формуле:

где п — количество карт на руках;— ранг i-й карты, прини­мающий значения от 1 до 9 в соответствии с достоинством карты; — признак козырной карты,, если /-я карта принадлежит ккозырной масти, и— в противном случае.

В течение игры ряд событий происходит по нормативным правилам, т.е. без учета мнения ифоков. К таким событиям отно­сятся первоначальная раздача карт ифокам, взятие новых карт из колоды, а также наступление событий Ходить и Биться. Событие Подкидывать наступает по воле ифока. Активные действия ифо-ка могут быть реализованы различными способами. Для выбора способа действия из всех возможных альтернатив необходимо сформулировать правила принятия решений, в которых можно использовать значение относительного потенциала Мь.

В качестве возможных альтернативных вариантов основных событий были приняты следующие: Ходить={ходить младшей; ходить парными; ходить козырем; ходить неудобной для против­ника мастью}; Подкидывать={подкидывать; не подкидывать); Битъся={биться младшей по масти; биться младшим козырем; биться козырем того же ранга; принять}.

Если флаг текущего события сигнализирует о необходимости совершения хода, то начинается анализ возможных вариантов решений в соответствии со сформированным набором правил. Следует подчеркнуть, что вычисление и сравнение значений от­носительного потенциала выполняются для альтернативных ва­риантов множества карт, которое останется на руках у ифока по­сле совершения анализируемых действий. Лучшей альтернативой является та, которая обеспечивает максимальное значение от­носительного потенциала остающихся на руках карт.

Таким образом, правило выбора решения Ai при наступлении события Ходить можно записать в виде:

Решение о подкидывании карт принимается на основе сравне­ния возможных альтернативных действий с текущим значением потенциала игрока. Правило выбора действия в этом случае мо­жет учитывать близость финала игры и склонность игрока к рис­ку. При наступлении события Биться альтернативных вариантов бывает меньше, чем при заходе. Решение о принятии карт может оказаться неизбежным, если игрок не имеет на руках карт, кото­рыми можно отбиться. В этом случае не требуется вычисление значения потенциала. Кроме того, такое решение может быть принято сознательно в том случае, если ифок способен побить карты противника, но значение потенциала резко снижается и состояние игры не предвещает скорого финала.

Формула вычисления относительного потенциала свидетель­ствует о невысокой вероятности выбора альтернатив ходить козы­рем или биться козырем, так как это часто приводит к существен­ному уменьшению потенциала. Поэтому реализация описанной тактики позволяла программе достаточно хорошо ифать на на­чальной стадии, но часто приводила к проигрышу в конце игры, так как компьютерный игрок не хотел расставаться с козырными картами, стремясь сохранить высокий потенциал. Этот факт был обнаружен в процессе тестирования и послужил причиной моди­фикации правил принятия решений таким образом, чтобы такти­ка изменялась по ходу игры. В данной версии программы основа­нием для изменения тактики является мера близости к финалу игры. В качестве оценки такой меры можно использовать коли­чество карт в колоде или количество вышедших из игры карт. В рассматриваемой реализации программы сигналом для изменения тактики являлось исчерпание карт в колоде. При наступле­нии этого события компьютерный игрок начинает принимать ре­шения по другим правилам, ориентированным на минимизацию количества карт на руках. Программа с изменяющейся тактикой уже не совершает упомянутых выше ошибок.

Несмотря на кажущуюся несерьезность, разработка игровых программ является хорошим тренингом для будущих и уже состо­явшихся специалистов в области разработки интеллектуальных информационных систем.