Всем привет. Пишу игру крестики нолики с GUI на tkinter. Начал так, что при нажатии на кнопку командной ноликов clicked_button.use_btn_toe = True и также для крестиков, то есть можно отследить какой командой нажималась кнопка . Также создал словарь с парочкой победных случаев. Но как сделать так, чтобы это проверялось и при этом победа засчитывалась определенной из команд.
Вот код:
[/QUOTE]
Вот код:
Python:
import tkinter as tk
from tkinter.messagebox import showinfo
class MyButton(tk.Button):
def __init__(self, master, x, y, number=0, *args, **kwargs):
super(MyButton, self).__init__(master, *args, **kwargs)
self.x = x
self.y = y
self.number = number
def __repr__(self):
return f'MyButton {self.x} {self.y}'
win_m = {
1: ['.!mybutton', '.!mybutton2', '.!mybutton3'],
2: ['.!mybutton3', '.!mybutton5', '.!mybutton7'],
3: ['.!mybutton', '.!mybutton5', '.!mybutton9']
}
class TTT:
window = tk.Tk()
queue = [1, 2]
use_btn_cross = False
use_btn_toe = False
def __init__(self):
self.buttons = []
count = 0
for i in range(1, 4):
temp = []
for j in range(1, 4):
btn = MyButton(TTT.window, x=i, y=j, width=3, font='Calibri 15 bold')
btn.config(command=lambda button=btn: self.click(button))
temp.append(btn)
count += 1
self.buttons.append(temp)
def click(self, clicked_button: MyButton):
print(clicked_button)
if TTT.queue[0] == 1:
clicked_button.config(text='x', fg='black')
clicked_button.TTT.use_btn_cross = True
TTT.queue.pop(0)
TTT.queue.append(1)
self.check_win(clicked_button)
else:
clicked_button.config(text='O', fg='red')
clicked_button.TTT.use_btn_toe = True
TTT.queue.pop(0)
TTT.queue.append(2)
self.check_win(clicked_button)
def menu(self):
print('Вы находитесь в текстовом меню игры',
'Крестики-Нолики',
'Если Вы хотите запустить игру, то введите "старт"',
'Если Вы хотите выйти, то введите "выход"',
end='\n'
)
x = input('Вводить сюда:')
if x == 'старт':
self.start
elif x == 'выход':
exit()
def check_win(self, clicked_button: MyButton):
wins = win_m
if clicked_button.use_btn:
if TTT.queue[1] == 1:
showinfo('WIN', 'Выиграла команда крестиков')
elif TTT.queue[1] == 1:
showinfo('WIN', 'Выиграла команда ноликов')
def create_widgets(self):
count = 0
for i in range(3):
for j in range(3):
btn = self.buttons[i][j]
btn.number = count
btn.grid(row=i, column=j)#, stick='NEWS')
count += 1
def start(self):
self.create_widgets()
TTT.window.mainloop()
ttt = TTT()
[QUOTE]
ttt.start()
[/QUOTE]
[QUOTE]
[/QUOTE]
[QUOTE]