Как сделать шахматную доску в word?

Особенности

Для игры необходима доска из 64 клеток светлого и тёмного цветов и специальные фигуры, которые игроки передвигают по полю. Фигурки для игры также делятся на светлые и темные. Всего их 32, набор для одного игрока состоит из 16 штук: пешки (8 штук), конь (2 штуки), слон (2 штуки), ладья (2 штуки), ферзь (1 штука), король (1 штука). Для изготовления фигурок используются различные материалы, это может быть дерево, пластик, мрамор, металл, слоновая кость, оникс и полистоун. Большое распространение среди игроков получили резные шахматы из дерева, которые подойдут и в качестве подарка.

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

Шаг 2. Оценка доски

Теперь попробуем понять, какая из сторон сильнее в определенном положении. Самый простой способ добиться этого — посчитать относительную силу фигур на доске, используя следующую таблицу:

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

var calculateBestMove = function (game) {        var newGameMoves = game.ugly_moves();      var bestMove = null;      //Используйте любое отрицательное число      var bestValue = -9999;        for (var i = 0; i < newGameMoves.length; i++) {          var newGameMove = newGameMoves[i];          game.ugly_move(newGameMove);            //Возьмите отрицательное число, поскольку ИИ играет черными          var boardValue = -evaluateBoard(game.board())          game.undo();          if (boardValue > bestValue) {              bestValue = boardValue;              bestMove = newGameMove          }      }        return bestMove;    };  

Единственным ощутимым улучшением является то, что теперь наш алгоритм съест фигуру, если это возможно:

Черные играют с помощью простой функции оценки

Посмотреть, что получилось на данном этапе, вы можете на JSFiddle.

Начинаем с клеток

1. Из 6-миллиметровой березовой фанеры выпилите четыре заготовки размерами 83×610 мм для темных клеток А и шесть заготовок размерами 51×610 мм для светлых клеток В (рис. 1).

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

2016-05-25_11-06-17.jpg

2. Склейте вместе два куска 19-миллиметровой МДФ-плиты размерами 152×152 и 64×152 мм, чтобы получился Г-образный упор-ограничитель (фото А). Закрепите этот упор струбциной перед пильным диском и отрегулируйте его положение с помощью заготовки для светлых клеток В, чтобы отпилить отрезки длиной 51 мм. Затем сделайте 32 темные клетки А длиной 51 мм. Остаток заготовки для темных клеток используйте как шаблон для новой настройки упора-ограничителя. Таким же способом выпилите 32 светлые клетки В длиной 83 мм.

2016-05-25_11-07-25.jpg

Положив заготовку для светлых клеток В рядом с пильным диском, отрегулируйте положение продольного (параллельного) упора так, чтобы упор-ограничитель из обрезков касался заготовки, как показано слева. Зафиксируйте продольный упор и отпилите 32 детали от заготовки для темных клеток А, приставляя ее торец к упору-ограничителю, как показано справа.

3. Сделайте небольшие фаски на лицевой стороне всех клеток А, В с помощью шлифовальной колодки или небольшого рубанка. Затем приступайте к тонированию темных клеток (см. раздел «Как сделать шахматные клетки темными»).

Шаг 4. Альфа-бета-отсечение

Альфа-бета-отсечение — это метод оптимизации алгоритма «минимакс», который позволяет игнорировать некоторые ветви в дереве поиска. Это позволяет нам намного глубже оценить дерево поиска, используя те же ресурсы.

Альфа-бета-отсечение основано на ситуации, когда мы можем прекратить оценивать часть дерева поиска, если найдем шаг, который приведет к худшей ситуации, чем та, к которой приводил ранее обнаруженный шаг.

Альфа-бета-отсечение не влияет на результат минимакса, оно только ускоряет его.

Этот алгоритм будет более эффективным, если мы сначала проверим те пути, которые ведут к хорошим ходам:

Позиции, которые нам не нужны, если используется альфа-бета-отсечение. Дерево посещается в описанном порядке.

С альфа-бета-отсечением мы получаем значительное улучшение минимакса, как показано в следующем примере:

Количество позиций, которые нужно оценить в случае поиска с глубиной 4 и начальной позицией, изображённой на картинке.

Посмотреть, что получилось на данном этапе, вы можете на JSFiddle.

Шаг 5. Улучшенная функция оценки

Первоначальная функция оценки довольно наивна, поскольку мы просто подсчитываем очки фигур, которые находятся на доске. Чтобы улучшить её, мы начнём учитывать положение фигур. Например, конь в центре доски «дороже», потому что он имеет больше доступных ходов и, следовательно, более активен, чем конь на краю доски.

Мы будем использовать слегка скорректированную версию квадратных таблиц, первоначально описанных в вики Chess Programming.

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

Применив это улучшение, мы получим алгоритм, который неплохо играет в шахматы, по крайней мере, с точки зрения простого игрока:

Улучшенная оценка и альфа-бета-отсечение с глубиной поиска 3

Посмотреть, что получилось на данном этапе, вы можете на JSFiddle.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий