КурсыИИМатематикаКодФизикаО проекте и вопросы

TwiddleLab / Код / Строим на Python

Крестики-нолики с ботом

Урок 12 из 12 · 7 мин · Бесплатно, без аккаунта

Что ты узнаешь

  • Проектирование программы: сначала спланируй части (показать, ход, проверка), потом напиши каждую функцией.
  • Игровой цикл повторяет: ход, проверка победителя, смена игрока, пока игра не кончится.
  • free_cells обходит сетку; random.choice выбирает одну из свободных клеток, поэтому бот никогда не жульничает.
  • Правила по порядку (выиграть, заблокировать, потом что угодно) делают бота намного сильнее. Если просмотреть все будущие ходы, он станет непобедимым.

Начать урок

Как идёт урок

  1. Твоя финальная сборка: игра, в которую друг сыграет против твоего бота.

    Сначала сыграй в готовую игру. Ты X.

  2. Спланируй игровой цикл.

    Расставь станции в том порядке, в каком их выполняет игра.

  3. Какие клетки вернёт free_cells(board)?

    Нажми на каждую клетку, которую, по-твоему, она перечислит. Клетки пронумерованы от 0 до 8 по рядам.

  4. Запусти free_cells.

    Два цикла обходят каждую клетку; пустые попадают в список как r * 3 + c.

  5. Проектирование программы и игровой цикл.

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

    Игровой цикл работает, пока никто не победил и доска не полна: ход игрока, проверка, ход бота.

    Маленькие функции можно проверять по одной: free_cells, winner, bot_move.

  6. Классика: напиши bot_move.

    Бот выбирает случайную свободную клетку и ставит туда O. Клетка m это ряд m // 3, столбец m % 3.

  7. Бот друга жульничает: иногда ходит в занятую клетку.

    Запусти. Потом сделай так, чтобы он выбирал из свободных клеток.

  8. Испытание: дай боту мозги.

    Перетащи правила в три ячейки. Решает первое правило, которое нашло ход. Потом проверь на 100 партиях.

  9. Случайный бот против твоего, по 100 партий.

    Запусти их и нажми на бота получше.

  10. Твой бот играет O, и сейчас его ход. Куда он пойдёт?

    Пройди правила своего бота по порядку.

  11. Выиграть, заблокировать или что угодно? Бот играет O.

    Брось каждую позицию в то, что сделает бот «выиграть-заблокировать».

  12. Передай другу.

    Друг играет X. Твой бот со своими правилами играет O.

Предыдущий урок: Сетки: списки списков · Часть курса: Строим на Python

Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.

Loading TwiddleLab