Непобедимый соперник в игре крестики-нолики - решение задачи на Python HD
Алгоритм и код на Python для игры крестики-нолики с непобедимым соперником. Плюс вариант через алгоритм Minimax есть на сайте :) Наша дискорд-игра начинающих программистов: https://discord.gg/fREEGAr ► Подпишись на канал "Айтишник": https://youtube.com/webpomosh ► Практические советы дает "Компьютерщик": https://youtube.com/skobks Компьютерный журнал айтишника: https://skobki.com Непобедимый соперник в Крестики-Нолики Задача: Напишите такую функцию, которая сделала бы стратегию компьютера в игре крестики-нолики безупречной. Проверьте, можно ли создать непобедимого противника. Беспроигрышная стратегия компьютера в крестики-нолики возможна в 4/5 случаев, если его ход компьютера первый. Как выиграть в крестики-нолики если ходишь вторым — вопрос более интересный, ведь в моей программе пользователь сам выбирает, ходить первым или нет. Если зайти в википедию на игру “Крестики-нолики”, то можно найти все возможные стратегии выигрыша в этой игре и возможности сыграть в ничью. Невозможно создать абсолютно беспроигрышную стратегию для компьютера, ведь уже известны стратегии и для ноликов, и для крестиков, которые гарантированно приводят к ничьей. Так что выигрыш возможен тогда, когда противник допускает ошибку. 1) В первую очередь нужно проверить, можно ли выиграть следующим ходом, и так пойти. 2) Если выиграть не получится, то нужно проверить, не может ли выиграть следующим ходом противник, и пойти туда. Если соблюдены два вышеописанных правила, то дальше общая суть заключается в том, что нужно стремиться сделать первый ход. В моей программе такой возможности нет, так что сделаем выбор: 1) если компьютер ходит первым (за крестики), то нужно пойти в центр, а затем ходить в такой свободный угол, который располагается дальше всего от последнего хода ноликов, а если так пойти нельзя — то ход выбирается рандомно; 2) если компьютер ходит вторым (играет за нолики), то проверяем куда был сделан первый ход: 2.1)если крестики пошли в центр, то ходить в любой угол, а если все углы уже заняты, то в любое место; 2.2) если крестики пошли первым ходом в угол, то сначала занимаем центр, а затем ходим в угол напротив первого хода крестиков, если таких вариантов нет — ходим по сторонам; 2.3) если крестики сделали первый ход по сторонам поля, ходим в центр, 2.3.1) если дальше крестики пошли в угол — ходим в угол на противоположной стороне (крест-на-крест), 2.3.2) если дальше крестики пошли в стороны напротив, ходим в любые углы, 2.3.3) если дальше крестики пошли по стороне рядом со своим первым ходом — ходим в угол рядом с крестиками. ********* Код программы - Python: Задачи и решения (Глава 6. Функции. Игра “Крестики-нолики”) - https://skobki.com/python-zadachi-i-resheniya-glava-6-funktsii-igra-krestiki-noliki/ ********* Айтишник — это ВЕБ ПОМОЩЬ и онлайн консалтинг. На канале выходят видео консультации, уроки и советы касательно профессиональных аспектов работы с информационными технологиями (ИТ). Программирование и дизайн онлайн проектов, работа в айти, ра
Похожие видео
Показать еще