Войти Создать аккаунт

Игра «Крестики-нолики» · Шаг 4 из 5

Простой бот

Бот, который ходит в первую свободную клетку, проигрывает за три хода и не сопротивляется. Простой бот играет по правилам, которые знает каждый ребёнок: выиграй, если можешь; помешай, если надо; займи середину; иначе — куда угодно.

Что сделать

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

Что приходит

  • pole — поле, список рядов

  • linii — список линий из шага 2

  • znak — каким знаком играет бот

  • sluchay — генератор случайностей, как random.Random

Что вернуть

Клетку (ряд, столбец) по первому сработавшему правилу: выиграть, помешать, середина, иначе sluchay.choice из свободных.

Допишите функцию hod_bota в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

В игре

Это запасной бот: игра зовёт hod_bota, когда непобедимого из пятого шага ещё нет. Решите шаг — и бот начнёт выигрывать и мешать вам, а не ходить в первую свободную клетку.

Без этого шага: бот ходит в первую свободную клетку.

Пример

В верхнем ряду два «X» и свободная клетка (0, 2), в середине — «O». Бот играет за «O». Выиграть ему негде, а «X» не хватает одного знака до линии — бот мешает и ходит в (0, 2).

L в проверке — восемь линий поля 3×3, sl — генератор случайностей: здесь он не понадобился.

Тот же пример кодом
Перед вызовом
import random
L = [[(0, 0), (0, 1), (0, 2)], [(1, 0), (1, 1), (1, 2)], [(2, 0), (2, 1), (2, 2)], [(0, 0), (1, 0), (2, 0)], [(0, 1), (1, 1), (2, 1)], [(0, 2), (1, 2), (2, 2)], [(0, 0), (1, 1), (2, 2)], [(0, 2), (1, 1), (2, 0)]]
sl = random.Random(1)
Вызов
hod_bota([["X", "X", "."], [".", "O", "."], [".", ".", "."]], L, "O", sl)
Вернуть
(0, 2)

Готовая игра →

Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.