Крестики-нолики
Крестики-нолики учат работать с полем-списком и проверять условия победы — важный шаг после простых текстовых игр.
Поле как список
Поле 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]; список из девяти проще для старта.
Начать игру бесплатно