Главная » Игры » Правила игры в шахматы

0

Если кто забыл, напомним основные правила игры. Начальная позиция изображена на рис. 2.1.

Рис. 2.11. Ходы ладьи                    Рис. 2.12. Ходы ферзя

Целесообразно упомянуть еще ряд правил:

?     Все фигуры, кроме пешек, бьют точно так же, как ходят.

?     Цель игры — поставить мат противнику. Мат — это когда король под боем, и пойти ему некуда, он везде попадает под бой.

?     Пат — это когда ходить может только король, а пойти ему некуда, он везде попадает под бой. Король при пате не. под шахом. Пат — это ничья.

?     Ничейным считается результат, когда какая-либо позиция повторяется три раза.

?     Ничейным может быть некоторое бесперспективное окончание, когда нет средств, чтобы поставить мат, или противники соглашаются на ничью.

Оценка позиции

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

Типичная оценочная функция

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

Пешки

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

int BlackPawn[64] = {0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 6, 8, 2, 10,10,2, 8, 6, 6, 8, 12,16,16,12,8, 6, 8, 12,16,24,24,16,12,8, 12,16,24,32,32,24,16,12, 12,16,24,32,32,24,16,12, 0, 0, 0, 0, 0, 0, 0, 0};

Пешки в примере двигаются сверху вниз. Видно, что первый ход королев­ской пешкой через клетку даст прирост стратегической оценки 16, а первый ход ладейной пешкой — только 2. Все это довольно условно, и конкретные величины в массиве могут отличаться в разных программах.

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

int PassedPawn[8] = {0, 5, 10, 15, 20, 30, 140, 0};

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

Король

Для короля основной приоритет в начале игры — остаться на своей гори­зонтали:

int Kingl[64] =

(0, 0, -4, -10, -10, -4, 0, 0, -4, -4, -8, -12, -12, -8, -4, -4, -12, -16, -20, -20, -20, -20, -16, -12, -16, -20, -24, -24, -24, -24, -20, -16, -16, -20, -24, -24, -24, -24, -20, -16, -12, -16, -20, -20, -20, -20, -16, -12, -4, -4, -8, -12, -12, -8, -4, -4, 0, 0, -4, -10, -10, -4, 0, 0);

Как видно, королю даже дан приоритет занять угол доски, в надежде, что он сделает рокировку.

В конце игры у короля — приоритет центра:

int King2[64] =

{0, 6, 12, 18, 18,   12, 6,  0,

6, 12,   18, 24,   24, 18,  12,  6,

12, 18,   24, 30,   30, 24,  18,  12,

18, 24,   30, 36,   36, 30,  24,  18,

18, 24,   30, 36,   36, 30,  24,  18,

12, 18,  24, 30,   30, 24,  18,  12,

6, 12,   18, 24,   24, 18,  12,  6,

0, 6, 12, 18,   18,   12,  6,   0};

Ферзь

Материальная оценка королевы примерно 900. Основной стимул для коро левы — быть ближе к королю противника. Расстояние до короля противни ка, умноженное на некоторый коэффициент, принимается за стратегиче­скую оценку для королевы.

Ладьи

Материальная оценка ладьи примерно 500.

Конь

Материальная оценка коня — примерно 300. Основной стимул для коня — занять центр доски.

int knight[64]  =

(0, 4, 8, 10, 10,   8, 4,   0,

4, 8, 16, 20,   20,   16,   8,   4,

8, 16, 24, 28,  28,   24,   16,  8,

10,20, 28, 32,  32,   28,   20,  10,

10,20, 28, 32,  32,   28,   20,  10,

8, 16, 24, 28,  28,   24,   16,  8,

4, 8, 16, 20,   20,   16,   8,   4,

0, 4, 8, 10, 10,   8, 4,    0};

Слон

Материальная оценка для слона — примерно 300. Основной стимул для слона — занять главные диагонали.

int bishop[64] = {14, 14, 14, 14, 14, 14, 14, 14, 14, 22, 18, 18, 18, 18, 22, 14, 14, 18, 22, 22, 22, 22, 18, 14, 14, 18, 22, 22, 22, 22, 18, 14, 14, 18, 22, 22, 22, 22, 18, 14, 14, 18, 22, 22, 22, 22, 18, 14, 14, 22, 18, 18, 18, 18, 22, 14, 14, 14, 14, 14, 14, 14, 14, 14};

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

Дополнительные факторы

Рассмотрим важные дополнительные факторы:

? Структура пешек. Этот момент требует особого рассмотрения. У белых и черных может быть поровну пешек, но из-за слабости структуры одна из

сторон может проиграть. Некоторые учитываемые факторы: сдвоенные пешки получают штраф, сдвоенные заблокированные пешки — еще больший штраф. Штрафом наказываются также изолированные и отста­лые (не защищенные) пешки.

?    Атака X-ray, когда одна дальнобойная фигура стоит позади другой, полу­чает некоторую премию.

?    Для ладей вводится дополнительно некоторая премия для занятия от­крытой вертикали и, начиная с середины игры, — некоторый штраф, в зависимости от расстояния до короля противника.

?    Два слона имеют некоторое преимущество, по сравнению с двумя други­ми легкими фигурами.

?     Мобильность: фигуры получают некоторую премию или штраф в зави­симости от того, сколько полей они могут атаковать.

?     Безопасность короля — это особая тема. Нужно с помощью штрафов по­пытаться сохранить пешечный экран короля (пока у противника есть ферзь). Можно оценивать некоторым косвенным образом давление на короля противника. Чем больше мы обращаем внимание на безопасность короля, тем лучше играет наша программа. Можно ввести некоторый штраф в зависимости от числа шахов в строке игры.

?     Некоторыми коэффициентами может регулироваться активность в атаке, стремление пешек в ферзи и т. д.

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

Литература:

Корнилов Е. Н.  Программирование шахмат и других логических игр. — СПб.: БХВ-Петербург, 2005. – 272 е.: ил.

По теме:

  • Комментарии