Держи ещё один вариант, с графическим интерфейсом на Tkinter. Поверю, ты справишься!
Программный код:
import tkinter as tk
from tkinter import messagebox
def check_win():
win_cond = [(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 x, y, z in win_cond:
if board[x] == board[y] == board[z] != " ":
return board[x]
return None
def click(event):
global turn
idx = int(event.widget.grid_info()["row"]) * 3 + int(event.widget.grid_info()["column"])
if board[idx] == " ":
board[idx] = players[turn % 2]
event.widget.config(text=players[turn % 2])
winner = check_win()
if winner:
messagebox.showinfo("Победа", f"Игрок {winner} выиграл!")
root.quit()
turn += 1
else:
messagebox.showwarning("Место занято", "Этот ход уже сделан.")
root = tk.Tk()
root.title("Крестики-нолики")
board = [" " for _ in range(9)]
players = ["X", "O"]
turn = 0
for i in range(3):
for j in range(3):
button = tk.Button(root, text=" ", font='Calibri 20', width=3, height=1)
button.grid(row=i, column=j)
button.bind("<Button-1>", click)
root.mainloop()