Я пытаюсь реализовать простую программу tic tac toe, но с трудностями при реализации игр. Это код, который я до сих пор:Простая программа Tictactoe
from Tkinter import *
click = False
class Buttons(object):
def __init__(self,master):
frame = Frame(master)
frame.pack()
self.button1= Button(frame,text=" ",height=4,width=8,
command=self.moveYes)
self.button1.grid(row=0,column=0)
self.button2= Button(frame,text=" ",height=4,width=8,
command=self.moveYes)
self.button2.grid(row=0,column=1)
self.button3= Button(frame,text=" ",height=4,width=8,
command=self.moveYes)
self.button3.grid(row=0,column=2)
self.button4= Button(frame,text=" ",height=4,width=8,
command=self.moveYes)
self.button4.grid(row=1,column=0)
self.button5= Button(frame,text=" ",height=4,width=8,
command=self.moveYes)
self.button5.grid(row=1,column=1)
self.button6= Button(frame,text=" ",height=4,width=8,
command=self.moveYes)
self.button6.grid(row=1,column=2)
self.button7= Button(frame,text=" ",height=4,width=8,
command=self.moveYes)
self.button7.grid(row=2,column=0)
self.button8= Button(frame,text=" ",height=4,width=8,
command=self.moveYes)
self.button8.grid(row=2,column=1)
self.button9= Button(frame,text=" ",height=4,width=8,
command=self.moveYes)
self.button9.grid(row=2,column=2)
def moveYes(self):
global click
global buttons
if buttons["text"] == " " and click == False:
buttons["text"]="X"
click= True
elif buttons["text"] == " " and click == True:
buttons["text"]="O"
root = Tk()
b=Buttons(root)
root.mainloop()
Когда я запускаю это, он говорит:
global name 'buttons' is not defined
Я предполагаю, что мой второй метод не является правильным. Я не понимаю, как получить доступ к кнопкам и сравнить значения, чтобы я мог изменить текст.
Должен ли я, на данный момент, начать с формата двойного игрока, а затем перейти к AI?
Как насчет того, что вы объявляете глобальную переменную 'buttons', как вы делаете с' click'? – schwobaseggl
@schwobaseggl я пытался, но это тоже не помогает. :(может ли быть так, что мой способ доступа к отдельным кнопкам с использованием одной переменной не так? – momo
@momo Имя 'buttons' не определено вне функции' 'moveYes', поэтому вы видите эту ошибку. Как правило,' ' global' используется для того, чтобы сделать переменную доступной * внутри * функцией, хотя она была первоначально определена * вне * этой функции. Кстати, вы можете сократить повторение кода, указав вместо этого кнопки в двух циклах 'for'. – jDo