Ранее в серии алгоритмика игр я наклонился над игрой в сапер, где мы проанализировали, как формируется доска и ведет игровой процесс. Теперь давайте попробуем перенести на компьютер одну из самых популярных игр, в которые играют на карточке — крестики-нолики. Однако на этот раз мы сосредоточимся не на программировании всего игрового процесса, а только на одном: искусственном интеллекте компьютерного игрока. Таккже хотим порекомендовать поиграть в игровые автоматы Вулкан казино на сайте , тут лучшие шансы на победу .
Перефразируя классику, хотелось бы сказать, что то, что такое крестики-нолики, каждый видит. Тем не менее, давайте вспомним основные правила игры.
В самом популярном варианте игра ведется на поле размером 3 × 3. Один из игроков играет крестиками (чаще всего тот только начинает), другой-кругами. Каждый из игроков поочередно ставит в один из незанятых ящиков свой символ. Конец игры происходит, когда один из игроков формирует линию из трех своих фигур (по вертикали, горизонтали или диагонали; затем выигрывает) или когда все поля заняты (ничья).
Для закрепления правил вы можете играть в крестики-нолики с компьютерным игроком ниже (вы играете в крестики-нолики и начинаете). Именно то, что вы видите здесь, является результатом этой статьи.
Немного математики
Давайте вернемся к теории игры в крестики-нолики. Поскольку игра пошаговая и для победы требуется три хода одного игрока, это означает, что каждая игра будет проходить не менее чем за 5 ходов из 9 возможных. Это дает небольшое количество возможных игр. Первое, что приходит на ум, учитывая знания в области комбинаторики, это то, что возможная игра есть . Однако это не так, потому что мы не всегда используем всю доску. Напомним, что первый игрок может закончить игру уже через 5 ходов (3 своих). До этого момента у нас есть возможные игры, из которых только часть завершена.
Тогда сколько этих игр в конечном итоге? мы можем подсчитать это следующим образом для игр, заканчивающихся пятью ходами:
- у нас есть 8 вариантов размещения 3 символов в одной строке. Мы можем расположить их в любом порядке способами.
- у оставшегося игрока есть выбор из 6, а затем 5 квадратов, где он может поставить свой символ. Это дает вам количество комбинаций .
- в общей сложности это дает нам выигрышные игры с 15120 возможных игр до этого момента.
Для дальнейших ходов вычисления усложняются, поэтому я опущу их объяснение, просто выпишу формулы:
- игры, заканчивающиеся победой в 6 ходов: .
- за 7 ходов: .
- за 8 ходов: .
- в 9 ходах: .
- ничьи: .
- всего всех возможных игр у нас есть .
Стратегия победы в крестики-нолики
стратегия победы в крестики-нолики
Специфика игры в крестики-нолики заключается в том, что у первого игрока обычно есть что сказать. Для опытного первого игрока второй может привести в лучшем случае к ничьей. Невозможно изменить ход игры без ошибок противника. С другой стороны, будучи первым игроком, мы должны знать, как не попасть в ловушки второго игрока, чтобы беспрепятственно выиграть.
Эта стратегия на самом деле является алгоритмом игры в крестики-нолики. Вы можете прямо реализовать его в своей игре, чтобы иметь очень простой ии. Или просто запомнить и использовать традиционные игры в крестики-нолики.
1. Выиграть
1. Выиграть
Если: есть строка, столбец или диагональ с двумя моими символами и пустое место, то: играть на пустом месте (и выиграть игру).
2. Блокировка
2. Блокировать
Если: есть строка, столбец или диагональ с двумя символами моего противника и пустое место,то: играть на пустом месте (тем самым блокируя потенциальную его победу).
3. Сделайте ветвление
3. Сделайте ветвление
Если: есть две пересекающиеся строки, столбцы или диагонали с одним моим символом и два пустых пространства и…если: точка пересечения пуста, то: перейти к точке пересечения (таким образом, создавая две возможности выигрыша на следующем ходу).
4. Сделайте блокирующее ветвление
4. Сделайте блокирующее ветвление
Если: есть две пересекающиеся строки, столбцы или диагонали с одним символом противника и два пустых пространства и…если: точка пересечения пуста, то:если: пустое пространство, которое создает два символа в строке для меня (тем самым заставляя моего противника блокировать), то: перейти к этому месту.в противном случае: перейдите к месту пересечения (тем самым заблокировав место, где противник мог бы сделать ветвление).
5. Играть мера
5. Играть центр
Если: центр пуст, то: играть центр.
6. Сыграйте противоположный угол
6. Играть противоположный угол
Если: мой противник находится в углу, а также…если: противоположный угол пуст, то: сыграйте противоположный угол.
7. Играть пустой угол
7. Играть пустой угол
Если: пустой угол, то: перейти к пустому углу.
8. Играть пустая сторона
8. Играть пустую сторону
Если: пустую сторону, то: перейти на пустую сторону.
