Дрон Кодер — программирование для детей и взрослых в игровой форме. Начать бесплатно

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

Крестики-нолики учат работать с полем-списком и проверять условия победы — важный шаг после простых текстовых игр.

Поле как список

Поле 3×3 удобно хранить одним списком из девяти клеток. В начале все клетки пустые, номер клетки 0–8 — это индекс в списке.

board = [' '] * 9
def show():
    for i in range(0, 9, 3):
        print(board[i], board[i+1], board[i+2])

Ход игрока

Игрок называет номер свободной клетки, и мы ставим туда его символ. После хода игроки меняются: был 'X' — стал 'O'.

pos = int(input('Клетка 0-8: '))
if board[pos] == ' ':
    board[pos] = player
    player = 'O' if player == 'X' else 'X'

Проверка победы

Победа — три одинаковых символа на линии. Все восемь линий (ряды, столбцы, диагонали) перечисляем заранее и проверяем каждую.

lines = [(0,1,2),(3,4,5),(6,7,8),(0,3,6),(1,4,7),(2,5,8),(0,4,8),(2,4,6)]
for a,b,c in lines:
    if board[a] == board[b] == board[c] != ' ':
        print('Победа', board[a])

Частые вопросы

Как заметить ничью? Если свободных клеток не осталось, а победителя нет — ничья.

Можно ли поле 2D-списком? Да, тогда клетка — это board[row][col]; список из девяти проще для старта.

Начать игру бесплатно
Попробуй прямо здесь
Уровень 1

Задание