【发布时间】:2018-10-23 22:37:01
【问题描述】:
我正在 Tkinter 中制作井字游戏,它目前可以运行,但我希望代码能够识别何时单击窗口中的范围(例如 0、0、200、200),以便我可以更改变量.这样做的目的是让游戏知道什么时候连续出现三个。我的问题(如您在第 28 - 29 行中看到的,如果 self.clicked...)正在尝试创建一个变量(或其他解决方案),该变量将使窗口中的框的值为 0 或 1,具体取决于它们是否已被点击。请帮忙。
from tkinter import *
tk = Tk()
width = 600
third = width / 3
canvas = Canvas(width=width, height=width)
tk.title = "Tic Tac Toe"
line1 = canvas.create_line(200, 0, 200, 600)
line2 = canvas.create_line(400, 0, 400, 600)
line3 = canvas.create_line(0, 200, 600, 200)
line4 = canvas.create_line(0, 400, 600, 400)
class XsorOs:
def __init__(self):
self.turn = 0
self.clicked = []
def click(self, row, col):
if (row, col) not in self.clicked:
if self.turn is 0:
canvas.create_line(col * third, row * third, (col + 1) * third, (row + 1) * third)
canvas.create_line((col + 1) * third, row * third, col * third, (row + 1) * third)
self.turn += 1
if self.clicked in range(0, 0, 200, 200):
print('hi')
elif self.turn is 1:
canvas.create_oval(col * third + 5, row * third + 5, (col + 1) * third - 5, (row + 1) * third - 5)
self.turn -= 1
else:
print("Game Over")
self.clicked.append((row, col))
def mouse_click(c, event):
col = int(event.x / third)
row = int(event.y / third)
c.click(row, col)
xo = XsorOs()
canvas.pack()
canvas.bind("<Button-1>", lambda event: mouse_click(xo, event))
canvas.mainloop()
在我弄清楚该怎么做之前,打印 hi 只是一个占位符。我希望它变成“将窗口的这一部分设为 1(从 0 开始)。”
【问题讨论】:
标签: python tkinter graphics tic-tac-toe region