我试着做10*10的tictactoe游戏,但有一个问题。我不知道如何使X和O在每个盒子中居中。这是代码:
import tkinter
p = tkinter.Canvas(width=500,height=550)
p.pack()
a=0
b=50
c=1
p.create_text(100, 10, text='Na rade je kruh',tags="kriz")
for i in range(10):
p.create_line(a,50,a,550)
a+=50
for i in range(10):
p.create_line(0,b,500,b)
b+=50
def kriz(sur):
global k,l
k=sur.x
l=sur.y
p.create_line(k-10,l+10,k+10,l-10,width=5,tags="m")
p.create_line(k-10,l-10,k+10,l+10,width=5,tags="m")
def kruh(sur):
global s,d
s=sur.x
d=sur.y
p.create_oval(s-10,d-10,s+10,d+10,width=5,tags="l")
def tictactoe(sur):
global c
if c%2== 0:
kriz(sur)
p.create_text(100, 10, text='Na rade je kruh',tags="kriz")
p.delete("kruh")
else:
kruh(sur)
p.create_text(100, 10, text='Na rade je krížik',tags="kruh")
p.delete("kriz")
c+=1
def zmaz():
p.delete("m")
p.delete("l")
p.bind("<Button-1>", tictactoe)
button1 = tkinter.Button(text="reset", command=zmaz)
button1.pack()
root = tkinter.Tk()
tkinter.mainloop()发布于 2022-06-14 03:05:29
要使X和O在它们的框中居中,可以使用int(sur.x/50)*50+25和int(sur.y/50)*50+25。下面是完整的工作代码,包括代码中缺少的底线:
import tkinter
p = tkinter.Canvas(width=500,height=550)
p.pack()
a=0
b=50
c=1
p.create_text(100, 10, text='Na rade je kruh',tags="kriz")
for i in range(10):
p.create_line(a,50,a,550)
a+=50
for i in range(11):
p.create_line(0,b,500,b)
b+=50
def kriz(sur):
global k,l
k=int(sur.x/50)*50+25
l=int(sur.y/50)*50+25
p.create_line(k-10,l+10,k+10,l-10,width=5,tags="m")
p.create_line(k-10,l-10,k+10,l+10,width=5,tags="m")
def kruh(sur):
global s,d
s=int(sur.x/50)*50+25
d=int(sur.y/50)*50+25
p.create_oval(s-10,d-10,s+10,d+10,width=5,tags="l")
def tictactoe(sur):
global c
if c%2== 0:
kriz(sur)
p.create_text(100, 10, text='Na rade je kruh',tags="kriz")
p.delete("kruh")
else:
kruh(sur)
p.create_text(100, 10, text='Na rade je krížik',tags="kruh")
p.delete("kriz")
c+=1
def zmaz():
p.delete("m")
p.delete("l")
p.bind("<Button-1>", tictactoe)
button1 = tkinter.Button(text="reset", command=zmaz)
button1.pack()
root = tkinter.Tk()
tkinter.mainloop()https://stackoverflow.com/questions/72608532
复制相似问题