Игра «Крестики-нолики» · Шаг 3 из 5
Кто победил
После каждого хода оболочка спрашивает: собрал ли кто-нибудь линию? И какую — её клетки на поле загорятся.
Что сделать
Найдите на поле собранную линию — клетки, занятые одним знаком.
Что приходит
pole— поле 3×3: список рядов, в клетке «X», «O» или «.» — пустоlinii— все линии поля из шага 2: каждая — список клеток(ряд, столбец)
Что вернуть
Пару (знак, линия) для первой по списку линии из одного знака; такой нет — None.
Допишите функцию pobeditel в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра спрашивает pobeditel после каждого хода. Нашлась линия — партия окончена, а клетки линии подсвечиваются. Решите шаг — и игра заметит победу сразу, а не когда кончится место на поле.
Без этого шага: победителя никто не замечает — партия идёт, пока поле не заполнится.
На поле верхний ряд — «X X X», во втором ряду два «O». Первая по списку линия — верхний ряд, и она вся из «X». Функция возвращает ("X", [(0, 0), (0, 1), (0, 2)]).
L в проверке — готовый список восьми линий поля 3×3, ровно такой, какой строит второй шаг.
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)]]
pobeditel([["X", "X", "X"], ["O", "O", "."], [".", ".", "."]], L)
('X', [(0, 0), (0, 1), (0, 2)])
Функция принимает поле и список линий (как в шаге 2).
Возвращает пару (знак, линия) для первой по списку линии, все клетки которой заняты одним и тем же знаком — «X» или «O». Если такой линии нет, возвращает None. Линия из свободных клеток победой не считается.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.