תשובה אחת
from tkinter import*
from tkinter.messagebox import*
window = tk()
window.title('tic tac toe')

counter=0
li=[[''for a in range(3)]for b in range(3)]

def disable(player):
for i in b:
i.config(state=disabled)
a=showinfo('congratulations!',f'{player} won!')

def win():
disable('you')
def lose():
disable('computer')
def draw():
disable('nobody')

def message():
def win_lose(a):
if len(set(a))==1and''not in a:
if'x'in a:
win()
else:
lose()
win_lose([li[i][i]for i in range(3)])
win_lose([li[i][2-i]for i in range(3)])
for i in li:
win_lose(i)
for i in range(3):
win_lose([li[j][i]for j in range(3)])
if counter==9:
draw()
def b_click(b):
#global counter2
global counter
counter+=1
def conf(txt):
b.config(text=txt,state=disabled)
li[b.grid_info()['row']][b.grid_info()['column']]=txt
if counter%2:
conf('x')
else:
conf('o')
message()

b1 = button(command=lambda: b_click(b1))
b2 = button(command=lambda: b_click(b2))
b3 = button(command=lambda: b_click(b3))
b4 = button(command=lambda: b_click(b4))
b5 = button(command=lambda: b_click(b5))
b6 = button(command=lambda: b_click(b6))
b7 = button(command=lambda: b_click(b7))
b8 = button(command=lambda: b_click(b8))
b9 = button(command=lambda: b_click(b9))

a=list(globals().values())
b=a[a.index(b1):]
for i in enumerate(b):
j1,j2=i[0],i[1]
j2.grid(row=j1//3,column=j1%3)
j2.config(text='',height=3,width=6)

window.mainloop()

#הנה הלינק לקוד:
https://replit.com/@lyvrv1/tic-tac-toe#main.py

למקרה שלא הבנת, זה קוד למשחק איקס עיגול גרפי. השתמשתי בספריית tkinter בשבילו. אם לא למדת tkinter עדיין (וחבל אם לא) אז אני יכולה לתת לך דוגמה לקוד איקס עיגול לא גרפי (אבל עד עכשיו יצרתי רק גרפי)