这是我的方式 :) 还有一些事情要做
from tkinter import *
from tkinter import ttk
import tkinter.messagebox
polje = []
igrac1 = []
igrac2 = []
i = 0
j = 0
pobjeda = {(1, 2, 3), (4, 5, 6), (7, 8, 9), (1, 5, 9), (3, 5, 7), (1, 4, 7), (3, 6, 9), (2, 5, 8)}
class App:
def __init__(self, master):
self.frame1 = Frame(master)
self.frame1.grid(row=0, columnspan=3)
self.L1 = Label(master, text="Igrac1")
self.L1.grid(row=0, column=0)
self.L2 = Label(master, text="Draw")
self.L2.grid(row=0, column=1)
self.L3 = Label(master, text="Igrac2")
self.L3.grid(row=0, column=2)
self.frame2 = Frame(master)
self.frame2.grid(row=1, columnspan=3)
self.L4 = Label(master, text="#") #broj pobjeda igraca1
self.L4.grid(row=1, column=0)
self.L5 = Label(master, text="#") # broj remija
self.L5.grid(row=1, column=1)
self.L6 = Label(master, text="#") # broj pobjeda igraca2
self.L6.grid(row=1, column=2)
self.frame3 = Frame(master)
self.frame3.grid(row=2, column=0)
self.c1 = Canvas(self.frame3, width=70, height=70)
self.c1.bind("<Button-1>", lambda event, args=self.c1: self.IspisX(event, args))
self.c1.grid(sticky=NW)
self.c1.create_line(70, 0, 70, 70)
self.frame4 = Frame(master)
self.frame4.grid(row=2, column=1)
self.c2 = Canvas(self.frame4, width=70, height=70)
self.c2.grid(sticky=NW)
self.c2.create_line(70, 0, 70, 70)
self.frame5 = Frame(master)
self.frame5.grid(row=2, column=2)
self.c3 = Canvas(self.frame5, width=70, height=70)
self.c3.grid(sticky=NW)
self.frame6 = Frame(master)
self.frame6.grid(row=3, column=0)
self.c4 = Canvas(self.frame6, width=70, height=70)
self.c4.grid(sticky=NW)
self.c4.create_line(1, 1, 69, 1)
self.c4.create_line(70, 0, 70, 70)
self.frame7 = Frame(master)
self.frame7.grid(row=3, column=1)
self.c5 = Canvas(self.frame7, width=70, height=70)
self.c5.grid(sticky=NW)
self.c5.create_line(1, 1, 69, 1)
self.c5.create_line(70, 0, 70, 70)
self.frame8 = Frame(master)
self.frame8.grid(row=3, column=2)
self.c6 = Canvas(self.frame8, width=70, height=70)
self.c6.grid(sticky=NW)
self.c6.create_line(1, 1, 69, 1)
self.frame9 = Frame(master)
self.frame9.grid(row=4, column=0)
self.c7 = Canvas(self.frame9, width=70, height=70)
self.c7.grid(sticky=NW)
self.c7.create_line(1, 1, 69, 1)
self.c7.create_line(70, 0, 70, 70)
self.frame10 = Frame(master)
self.frame10.grid(row=4, column=1)
self.c8 = Canvas(self.frame10, width=70, height=70)
self.c8.grid(sticky=NW)
self.c8.create_line(1, 1, 69, 1)
self.c8.create_line(70, 0, 70, 70)
self.frame11 = Frame(master)
self.frame11.grid(row=4, column=2)
self.c9 = Canvas(self.frame11, width=70, height=70)
self.c9.grid(sticky=NW)
self.c9.create_line(1, 1, 69, 1)
def IspisX(self, event, x):
if x == self.c1:
if 1 not in polje:
x.create_line(10, 10, 60, 60)
x.create_line(10, 60, 60, 10)
polje.append(1)
igrac1.append(1)
self.Igranje("igrac2")
else:
pass
elif x == self.c2:
if 2 not in polje:
x.create_line(10, 10, 60, 60)
x.create_line(10, 60, 60, 10)
polje.append(2)
igrac1.append(2)
self.Igranje("igrac2")
else:
pass
elif x == self.c3:
if 3 not in polje:
x.create_line(10, 10, 60, 60)
x.create_line(10, 60, 60, 10)
polje.append(3)
igrac1.append(3)
self.Igranje("igrac2")
else:
pass
elif x == self.c4:
if 4 not in polje:
x.create_line(10, 10, 60, 60)
x.create_line(10, 60, 60, 10)
polje.append(4)
igrac1.append(4)
self.Igranje("igrac2")
else:
pass
elif x == self.c5:
if 5 not in polje:
x.create_line(10, 10, 60, 60)
x.create_line(10, 60, 60, 10)
polje.append(5)
igrac1.append(5)
self.Igranje("igrac2")
else:
pass
elif x == self.c6:
if 6 not in polje:
x.create_line(10, 10, 60, 60)
x.create_line(10, 60, 60, 10)
polje.append(6)
igrac1.append(6)
self.Igranje("igrac2")
else:
pass
elif x == self.c7:
if 7 not in polje:
x.create_line(10, 10, 60, 60)
x.create_line(10, 60, 60, 10)
polje.append(7)
igrac1.append(7)
self.Igranje("igrac2")
else:
pass
elif x == self.c8:
if 8 not in polje:
x.create_line(10, 10, 60, 60)
x.create_line(10, 60, 60, 10)
polje.append(8)
igrac1.append(8)
self.Igranje("igrac2")
else:
pass
elif x == self.c9:
if 9 not in polje:
x.create_line(10, 10, 60, 60)
x.create_line(10, 60, 60, 10)
polje.append(9)
igrac1.append(9)
self.Igranje("igrac2")
else:
pass
def IspisO(self, event, x):
if x == self.c1:
if 1 not in polje:
x.create_oval(25, 25, 50, 50)
polje.append(1)
igrac2.append(1)
self.Igranje("igrac1")
else:
pass
elif x == self.c2:
if 2 not in polje:
x.create_oval(25, 25, 50, 50)
polje.append(2)
igrac2.append(2)
self.Igranje("igrac1")
else:
pass
elif x == self.c3:
if 3 not in polje:
x.create_oval(25, 25, 50, 50)
polje.append(3)
igrac2.append(3)
self.Igranje("igrac1")
else:
pass
elif x == self.c4:
if 4 not in polje:
x.create_oval(25, 25, 50, 50)
polje.append(4)
igrac2.append(4)
self.Igranje("igrac1")
else:
pass
elif x == self.c5:
if 5 not in polje:
x.create_oval(25, 25, 50, 50)
polje.append(5)
igrac2.append(5)
self.Igranje("igrac1")
else:
pass
elif x == self.c6:
if 6 not in polje:
x.create_oval(25, 25, 50, 50)
polje.append(6)
igrac2.append(6)
self.Igranje("igrac1")
else:
pass
elif x == self.c7:
if 7 not in polje:
x.create_oval(25, 25, 50, 50)
polje.append(7)
igrac2.append(7)
self.Igranje("igrac1")
else:
pass
elif x == self.c8:
if 8 not in polje:
x.create_oval(25, 25, 50, 50)
polje.append(8)
igrac2.append(8)
self.Igranje("igrac1")
else:
pass
elif x == self.c9:
if 9 not in polje:
x.create_oval(25, 25, 50, 50)
polje.append(9)
igrac2.append(9)
self.Igranje("igrac1")
else:
pass
def Igranje(self, turn):
Game = True
i = 0
j = 0
while Game:
for k in pobjeda:
x = set(k)
if x.issubset(set(igrac1)):
tkinter.messagebox.showinfo("Izvjestaj", "Pobjedio je igrac 1")
elif x.issubset(set(igrac2)):
tkinter.messagebox.showinfo("Izvjestaj", "Pobjedio je igrac 2")
elif(len(polje)==9):
tkinter.messagebox.showinfo("Izvjestaj", "Partija je zavrsila remijem")
polje.append(10)
Game = False
break
else:
pass
if(turn == "igrac1"):
self.c1.bind("<Button-1>", lambda event, args=self.c1: self.IspisX(event, args)) #lambda funkcija je primila dva argumenta event i arg ,a njena zadaca je bila pozvati funckiju ispisX i poslati joj ta dva argumenta
self.c2.bind("<Button-1>", lambda event, args=self.c2: self.IspisX(event, args))
self.c3.bind("<Button-1>", lambda event, args=self.c3: self.IspisX(event, args))
self.c4.bind("<Button-1>", lambda event, args=self.c4: self.IspisX(event, args))
self.c5.bind("<Button-1>", lambda event, args=self.c5: self.IspisX(event, args))
self.c6.bind("<Button-1>", lambda event, args=self.c6: self.IspisX(event, args))
self.c7.bind("<Button-1>", lambda event, args=self.c7: self.IspisX(event, args))
self.c8.bind("<Button-1>", lambda event, args=self.c8: self.IspisX(event, args))
self.c9.bind("<Button-1>", lambda event, args=self.c9: self.IspisX(event, args))
turn = "igrac2"
i = i+1
print(i)
print("i")
break
else:
self.c1.bind("<Button-1>", lambda event, args=self.c1: self.IspisO(event, args))
self.c2.bind("<Button-1>", lambda event, args=self.c2: self.IspisO(event, args))
self.c3.bind("<Button-1>", lambda event, args=self.c3: self.IspisO(event, args))
self.c4.bind("<Button-1>", lambda event, args=self.c4: self.IspisO(event, args))
self.c5.bind("<Button-1>", lambda event, args=self.c5: self.IspisO(event, args))
self.c6.bind("<Button-1>", lambda event, args=self.c6: self.IspisO(event, args))
self.c7.bind("<Button-1>", lambda event, args=self.c7: self.IspisO(event, args))
self.c8.bind("<Button-1>", lambda event, args=self.c8: self.IspisO(event, args))
self.c9.bind("<Button-1>", lambda event, args=self.c9: self.IspisO(event, args))
j = j+1
print(j)
print("j")
turn = "igrac1"
break
if len(polje) < 10:
pass
else:
if(len(polje)==9):
tkinter.messagebox.showinfo("Izvjestaj", "Partija je zavrsila remijem")
Game = False
root = Tk()
a = App(root)
a.Igranje("igrac1")
root.mainloop()