class main: def __init__(self,master): self.frame = Frame(master) self.frame.pack(fill="both", expand=True) self.canvas = Canvas(self.frame, width=300, height=300) self.canvas.pack(fill="both", expand=True) self.label=Label(self.frame, text='Tic Tac Toe Game', height=6, bg='black', fg='blue') self.label.pack(fill="both", expand=True) self.frameb=Frame(self.frame) self.frameb.pack(fill="both", expand=True) self.Start1=Button(self.frameb, text='Click here to start\ndouble player', height=4, command=self.start1,bg='white', fg='purple') self.Start1.pack(fill="both", expand=True, side=RIGHT) self.Start2=Button(self.frameb, text='Click here to start\nsingle player', height=4, command=self.start2,bg='purple', fg='white') self.Start2.pack(fill="both", expand=True, side=LEFT) self._board() def start1(self): self.canvas.delete(ALL) self.label['text']=('Tic Tac Toe Game') self.canvas.bind("<ButtonPress-1>", self.sgplayer) self._board() self.TTT=[[0,0,0],[0,0,0],[0,0,0]] self.i=0 self.j=False def start2(self): self.canvas.delete(ALL) self.label['text']=('Tic Tac Toe Game') self.canvas.bind("<ButtonPress-1>", self.dgplayer) self._board() self.TTT=[[0,0,0],[0,0,0],[0,0,0]] self.i=0 self.j=False self.trigger=False def end(self): self.canvas.unbind("<ButtonPress-1>") self.j=True def _board(self): self.canvas.create_rectangle(0,0,300,300, outline="black") self.canvas.create_rectangle(100,300,200,0, outline="black") self.canvas.create_rectangle(0,100,300,200, outline="black") def sgplayer(self,event): for k in range(0,300,100): for j in range(0,300,100): if event.x in range(k,k+100) and event.y in range(j,j+100): if self.canvas.find_enclosed(k,j,k+100,j+100)==(): if self.i%2==0: X=(2*k+100)/2 Y=(2*j+100)/2 X1=int(k/100) Y1=int(j/100) self.canvas.create_oval( X+25, Y+25, X-25, Y-25, width=4, outline="black") self.TTT[Y1][X1]+=1 self.i+=1 else: X=(2*k+100)/2 Y=(2*j+100)/2 X1=int(k/100) Y1=int(j/100) self.canvas. create_line( X+20, Y+20, X-20, Y-20, width=4, fill="black") self.canvas. create_line( X-20, Y+20, X+20, Y-20, width=4, fill="black") self.TTT[Y1][X1]+=9 self.i+=1 self.check() def dgplayer(self,event): for k in range(0,300,100): for j in range(0,300,100): if self.i%2==0: if event.x in range(k,k+100) and event.y in range(j,j+100): if self.canvas.find_enclosed(k,j,k+100,j+100)==(): X=(2*k+100)/2 Y=(2*j+100)/2 X1=int(k/100) Y1=int(j/100) self.canvas.create_oval( X+25, Y+25, X-25, Y-25, width=4, outline="black") self.TTT[Y1][X1]+=1 self.i+=1 self.check() self.trigger=False else: print(self.i) self.check() print("checked") self.AIcheck() print("AIchecked") self.trigger=False def check(self): #horizontal check for i in range(0,3): if sum(self.TTT[i])==27: self.label['text']=('2nd player wins!') self.end() if sum(self.TTT[i])==3: self.label['text']=('1st player wins!') self.end() #vertical check #the matrix below transposes self.TTT so that it could use the sum fucntion again self.ttt=[[row[i] for row in self.TTT] for i in range(3)] for i in range(0,3): if sum(self.ttt[i])==27: self.label['text']=('2nd player wins!') self.end() if sum(self.ttt[i])==3: self.label['text']=('1st player wins!') self.end() #check for diagonal wins if self.TTT[1][1]==9: if self.TTT[0][0]==self.TTT[1][1] and self.TTT[2][2]==self.TTT[1][1] : self.label['text']=('2nd player wins!') self.end() if self.TTT[0][2]==self.TTT[1][1] and self.TTT[2][0]==self.TTT[1][1] : self.label['text']=('2nd player wins!') self.end() if self.TTT[1][1]==1: if self.TTT[0][0]==self.TTT[1][1] and self.TTT[2][2]==self.TTT[1][1] : self.label['text']=('1st player wins!') self.end() if self.TTT[0][2]==self.TTT[1][1] and self.TTT[2][0]==self.TTT[1][1] : self.label['text']=('1st player wins!') self.end() #check for draws if self.j==False: a=0 for i in range(0,3): a+= sum(self.TTT[i]) if a==41: self.label['text']=("It's a pass!") self.end() def AIcheck(self): #This is built on the self.check function self.ttt=[[row[i] for row in self.TTT] for i in range(3)] #DEFENSE #this is the horizontal checklist for h in range(0,3): k=0 j=0 if sum(self.TTT[h])==2: while k <3: if k==h: while j <3: if self.trigger==False: if self.TTT[k][j]==0: self.cross(j,k) break j+=1 k+=1 #this is the vertical checklist for h in range(0,3): k=0 j=0 if sum(self.ttt[h])==2: while k <3: if k==h: while j <3: if self.trigger==False: if self.ttt[k][j]==0: self.cross(k,j) break j+=1 k+=1 #this is the diagonal checklist if self.TTT[1][1]==1: if self.TTT[0][0]==1: if self.trigger==False: if self.TTT[2][2]==0: self.cross(2,2) if self.TTT[0][2]==1: if self.trigger==False: if self.TTT[2][0]==0: self.cross(0,2) if self.TTT[2][0]==1: if self.trigger==False: if self.TTT[0][2]==0: self.cross(2,0) if self.TTT[2][2]==1: if self.trigger==False: if self.TTT[0][0]==0: self.cross(0,0) if self.TTT[1][1]==0: if self.trigger==False: self.cross(1,1) self.trigger=True else: if self.trigger==False: self.randmove() def cross(self, k, j): # k is the x coords # j is the y coords X=(200*k+100)/2 Y=(200*j+100)/2 X1=int(k) Y1=int(j) self.canvas. create_line( X+20, Y+20, X-20, Y-20, width=4, fill="black") self.canvas. create_line( X-20, Y+20, X+20, Y-20, width=4, fill="black") self.TTT[Y1][X1]+=9 self.check() self.i+=1 self.trigger=True def randmove(self): while True: k=(randint(0,2)) j=(randint(0,2)) if self.TTT[j][k]==0: X=(200*k+100)/2 Y=(200*j+100)/2 self.canvas. create_line( X+20, Y+20, X-20, Y-20, width=4, fill="black") self.canvas. create_line( X-20, Y+20, X+20, Y-20, width=4, fill="black") self.TTT[j][k]+=9 self.check() self.i+=1 self.trigger=True break else: k=(randint(0,2))*100 j=(randint(0,2))*100
class main: def __init__(self): self.app = Tk() self.app.title('Tic Tac Toe') #self.app.resizable(width=False, height=False) #width and hight of window w = 900 h = 1100 #width and hight of screen ws = self.app.winfo_screenwidth() hs = self.app.winfo_screenheight() #calculate position x = ws / 2 - w / 2 y = hs / 2 - h / 2 #place window -> pramaters(visina, dolzina, pozicija x, pozicija y) self.app.geometry("%dx%d+%d+%d" % (w, h, x, y)) #====================================== self.frame = Frame() #main frame self.frame.pack(fill='both', expand=True) self.label = Label(self.frame, text='Tic Tac Toe', height=4, bg='white', fg='blue') self.label.pack(fill='both', expand=True) #self.label2 = Label(self.frame, text = 'here', height = 2, bg = 'white', fg = 'blue') odkomentiri samo za develop------------- #self.label2.pack(fill='both', expand = True) self.canvas = Canvas(self.frame, width=900, height=900) self.canvas.pack(fill='both', expand=True) self.framepod = Frame(self.frame) #sub frame self.framepod.pack(fill='both', expand=True) self.Single = Button(self.framepod, text='Start single player', height=4, command=self.startsingle, bg='white', fg='blue') self.Single.pack(fill='both', expand=True, side=RIGHT) self.Multi = Button(self.framepod, text='Start double player', height=4, command=self.double, bg='white', fg='blue') self.Multi.pack(fill='both', expand=True, side=RIGHT) self.board = AI() self.draw() def double(self): #cleans the all simbols from canvas self.canvas.delete(ALL) self.label['text'] = ('Tic Tac Toe Game') self.canvas.bind("<ButtonPress-1>", self.place) self.draw() #--------------------------------------- self.table = [[-1, -1, -1], [-1, -1, -1], [-1, -1, -1]] self.c = 0 #counter self.e = False #flag for end game def draw(self): #draws the outline lines self.canvas.create_rectangle(0, 0, 900, 900, outline='black') self.canvas.create_rectangle(300, 900, 600, 0, outline='black') self.canvas.create_rectangle(0, 300, 900, 600, outline='black') def place(self, event): for i in range(0, 900, 300): for j in range(0, 900, 300): if event.x in range(i, i + 300) and event.y in range( j, j + 300): if self.canvas.find_enclosed(i, j, i + 300, j + 300) == (): if self.c % 2 == 0: #calculate points to draw circle x = (2 * i + 300) / 2 y = (2 * j + 300) / 2 x2 = int(i / 300) y2 = int(j / 300) self.canvas.create_oval(x + 75, y + 75, x - 75, y - 75, width=4, outline="blue") self.table[y2][x2] = 4 self.c += 1 else: #calculate points to draw cross x = (2 * i + 300) / 2 y = (2 * j + 300) / 2 x2 = int(i / 300) y2 = int(j / 300) self.canvas.create_line(x + 60, y + 60, x - 60, y - 60, width=4, fill="red") self.canvas.create_line(x - 60, y + 60, x + 60, y - 60, width=4, fill="red") self.table[y2][x2] = 1 self.c += 1 self.check() def startsingle(self): self.canvas.delete(ALL) self.label['text'] = ('Tic Tac Toe Game') self.canvas.bind("<ButtonPress-1>", self.placeone) self.draw() self.board = AI() def placeone(self, event): player = 'X' for i in range(0, 900, 300): for j in range(0, 900, 300): if event.x in range(i, i + 300) and event.y in range( j, j + 300): if self.canvas.find_enclosed(i, j, i + 300, j + 300) == (): x = (2 * i + 300) / 2 y = (2 * j + 300) / 2 x2 = int(i / 300) y2 = int(j / 300) self.canvas.create_line(x + 60, y + 60, x - 60, y - 60, width=4, fill="red") self.canvas.create_line(x - 60, y + 60, x + 60, y - 60, width=4, fill="red") player_move = x2 + 3 * y2 #spremeni self.board.make_move(player_move, player) if self.board.complete(): self.label['text'] = (self.board.winner()) self.canvas.unbind("ButtonPress-1") self.board = AI() elif self.board.winner() != None: self.label['text'] = (self.board.winner()) self.canvas.unbind("ButtonPress-1") self.board = AI() else: player = self.board.get_enemy(player) computer_move = self.board.determine(self.board, player) self.board.make_move(computer_move, player) ti = computer_move % 3 tj = computer_move / 3 x = (600 * ti + 300) / 2 y = (600 * tj + 300) / 2 #self.label2['text'] = str(computer_move) + ' ti ' + str(ti) + ' tj ' + str(tj) + ' y ' + str(y) + ' x ' +str(x) self.canvas.create_oval(x + 75, y + 75, x - 75, y - 75, width=4, outline="blue") if self.board.winner() != None: self.label['text'] = (self.board.winner()) self.canvas.unbind("ButtonPress-1") self.board = AI() def check(self): #checks for win #horitontal for i in range(3): if sum(self.table[i]) == 3: self.label['text'] = ('X wins') self.end() if sum(self.table[i]) == 12: self.label['text'] = ('O wins') self.end() #vertical self.vs = [[row[i] for row in self.table] for i in range(3)] for i in range(3): if sum(self.vs[i]) == 3: self.label['text'] = ('X wins') self.end() if sum(self.vs[i]) == 12: self.label['text'] = ('O wins') self.end() #diagonals self.dig1 = 0 self.dig2 = 0 for i in range(3): self.dig1 += self.table[i][i] for i in range(3): self.dig2 += self.table[2 - i][i] if self.dig1 == 3: self.label['text'] = ('X wins') self.end() if self.dig1 == 12: self.label['text'] = ('O wins') self.end() if self.dig2 == 3: self.label['text'] = ('X wins') self.end() if self.dig2 == 12: self.label['text'] = ('O wins') self.end() #draw if self.e == False: a = 0 for i in range(3): a += sum(self.table[i]) if a == 24: #5 *4 + 4 * 1 --> 5 circles and 4 crosses self.label['text'] = ('Draw') self.end() def end(self): self.canvas.unbind("<ButtonPress-1>") self.e = True def mainloop(self): self.app.mainloop()
class main: def __init__ (self): self.app = Tk() self.app.title('Tic Tac Toe') #self.app.resizable(width=False, height=False) #width and hight of window w = 900 h = 1100 #width and hight of screen ws = self.app.winfo_screenwidth() hs = self.app.winfo_screenheight() #calculate position x = ws/2 - w/2 y = hs/2 - h/2 #place window -> pramaters(visina, dolzina, pozicija x, pozicija y) self.app.geometry("%dx%d+%d+%d" % (w,h, x, y)) #====================================== self.frame = Frame() #main frame self.frame.pack(fill = 'both', expand = True) self.label = Label(self.frame, text = 'Tic Tac Toe', height = 4, bg = 'white', fg = 'blue') self.label.pack(fill='both', expand = True) #self.label2 = Label(self.frame, text = 'here', height = 2, bg = 'white', fg = 'blue') odkomentiri samo za develop------------- #self.label2.pack(fill='both', expand = True) self.canvas = Canvas(self.frame, width = 900, height = 900) self.canvas.pack(fill = 'both', expand = True) self.framepod = Frame(self.frame)#sub frame self.framepod.pack(fill = 'both', expand = True) self.Single = Button(self.framepod, text = 'Start single player', height = 4, command = self.startsingle, bg = 'white', fg = 'blue') self.Single.pack(fill='both', expand = True, side=RIGHT) self.Multi = Button(self.framepod, text = 'Start double player', height = 4, command = self.double, bg = 'white', fg = 'blue') self.Multi.pack(fill='both', expand = True, side=RIGHT) self.board = AI() self.draw() def double(self): #cleans the all simbols from canvas self.canvas.delete(ALL) self.label['text'] = ('Tic Tac Toe Game') self.canvas.bind("<ButtonPress-1>", self.place) self.draw() #--------------------------------------- self.table=[[-1,-1,-1],[-1,-1,-1],[-1,-1,-1]] self.c=0 #counter self.e=False #flag for end game def draw(self): #draws the outline lines self.canvas.create_rectangle(0,0,900,900, outline='black') self.canvas.create_rectangle(300,900,600,0, outline='black') self.canvas.create_rectangle(0,300,900,600, outline='black') def place(self, event): for i in range(0,900,300): for j in range(0,900,300): if event.x in range(i,i+300) and event.y in range(j, j+300): if self.canvas.find_enclosed(i,j,i+300, j+300) == (): if self.c % 2 == 0: #calculate points to draw circle x=(2*i+300)/2 y=(2*j+300)/2 x2=int(i/300) y2=int(j/300) self.canvas.create_oval(x+75,y+75,x-75,y-75, width = 4, outline="blue") self.table[y2][x2] = 4 self.c+=1 else: #calculate points to draw cross x=(2*i+300)/2 y=(2*j+300)/2 x2=int(i/300) y2=int(j/300) self.canvas.create_line(x+60,y+60,x-60,y-60, width = 4, fill="red") self.canvas.create_line(x-60,y+60,x+60,y-60, width = 4, fill="red") self.table[y2][x2] = 1 self.c+=1 self.check() def startsingle(self): self.canvas.delete(ALL) self.label['text'] = ('Tic Tac Toe Game') self.canvas.bind("<ButtonPress-1>", self.placeone) self.draw() self.board = AI() def placeone(self, event): player = 'X' for i in range(0,900,300): for j in range(0,900,300): if event.x in range(i,i+300) and event.y in range(j, j+300): if self.canvas.find_enclosed(i,j,i+300, j+300) == (): x=(2*i+300)/2 y=(2*j+300)/2 x2=int(i/300) y2=int(j/300) self.canvas.create_line(x+60,y+60,x-60,y-60, width = 4, fill="red") self.canvas.create_line(x-60,y+60,x+60,y-60, width = 4, fill="red") player_move = x2 + 3*y2 #spremeni self.board.make_move(player_move, player) if self.board.complete(): self.label['text'] = (self.board.winner()) self.canvas.unbind("ButtonPress-1") self.board = AI() elif self.board.winner() != None: self.label['text'] = (self.board.winner()) self.canvas.unbind("ButtonPress-1") self.board = AI() else: player = self.board.get_enemy(player) computer_move = self.board.determine(self.board, player) self.board.make_move(computer_move, player) ti = computer_move % 3 tj = computer_move / 3 x=(600*ti+300)/2 y=(600*tj+300)/2 #self.label2['text'] = str(computer_move) + ' ti ' + str(ti) + ' tj ' + str(tj) + ' y ' + str(y) + ' x ' +str(x) self.canvas.create_oval(x+75,y+75,x-75,y-75, width = 4, outline="blue") if self.board.winner() != None: self.label['text'] = (self.board.winner()) self.canvas.unbind("ButtonPress-1") self.board = AI() def check(self): #checks for win #horitontal for i in range(3): if sum(self.table[i])==3: self.label['text'] = ('X wins') self.end() if sum(self.table[i])==12: self.label['text'] = ('O wins') self.end() #vertical self.vs=[[row[i] for row in self.table] for i in range(3)] for i in range(3): if sum(self.vs[i])==3: self.label['text'] = ('X wins') self.end() if sum(self.vs[i])==12: self.label['text'] = ('O wins') self.end() #diagonals self.dig1=0 self.dig2=0 for i in range(3): self.dig1+=self.table[i][i] for i in range(3): self.dig2+=self.table[2-i][i] if self.dig1==3: self.label['text'] = ('X wins') self.end() if self.dig1==12: self.label['text'] = ('O wins') self.end() if self.dig2==3: self.label['text'] = ('X wins') self.end() if self.dig2==12: self.label['text'] = ('O wins') self.end() #draw if self.e==False: a=0 for i in range(3): a+=sum(self.table[i]) if a == 24: #5 *4 + 4 * 1 --> 5 circles and 4 crosses self.label['text'] = ('Draw') self.end() def end(self): self.canvas.unbind("<ButtonPress-1>") self.e=True def mainloop(self): self.app.mainloop()
class main: def __init__(self, master): self.frame = Frame(master) self.frame.pack(fill="both", expand=True) self.canvas = Canvas(self.frame, width=300, height=300) self.canvas.pack(fill="both", expand=True) self.label = Label(self.frame, text='Tic Tac Toe Game', height=6, bg='black', fg='blue') self.label.pack(fill="both", expand=True) self.frameb = Frame(self.frame) self.frameb.pack(fill="both", expand=True) self.Start1 = Button(self.frameb, text='Click here to start\ndouble player', height=4, command=self.start1, bg='white', fg='purple') self.Start1.pack(fill="both", expand=True, side=RIGHT) self.Start2 = Button(self.frameb, text='Click here to start\nsingle player', height=4, command=self.start2, bg='purple', fg='white') self.Start2.pack(fill="both", expand=True, side=LEFT) self._board() def start1(self): self.canvas.delete(ALL) self.label['text'] = ('Tic Tac Toe Game') self.canvas.bind("<ButtonPress-1>", self.sgplayer) self._board() self.TTT = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] self.i = 0 self.j = False def start2(self): self.canvas.delete(ALL) self.label['text'] = ('Tic Tac Toe Game') self.canvas.bind("<ButtonPress-1>", self.dgplayer) self._board() self.TTT = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] self.i = 0 self.j = False self.trigger = False def end(self): self.canvas.unbind("<ButtonPress-1>") self.j = True def _board(self): self.canvas.create_rectangle(0, 0, 300, 300, outline="black") self.canvas.create_rectangle(100, 300, 200, 0, outline="black") self.canvas.create_rectangle(0, 100, 300, 200, outline="black") def sgplayer(self, event): for k in range(0, 300, 100): for j in range(0, 300, 100): if event.x in range(k, k + 100) and event.y in range( j, j + 100): if self.canvas.find_enclosed(k, j, k + 100, j + 100) == (): if self.i % 2 == 0: X = (2 * k + 100) / 2 Y = (2 * j + 100) / 2 X1 = int(k / 100) Y1 = int(j / 100) self.canvas.create_oval(X + 25, Y + 25, X - 25, Y - 25, width=4, outline="black") self.TTT[Y1][X1] += 1 self.i += 1 else: X = (2 * k + 100) / 2 Y = (2 * j + 100) / 2 X1 = int(k / 100) Y1 = int(j / 100) self.canvas.create_line(X + 20, Y + 20, X - 20, Y - 20, width=4, fill="black") self.canvas.create_line(X - 20, Y + 20, X + 20, Y - 20, width=4, fill="black") self.TTT[Y1][X1] += 9 self.i += 1 self.check() def dgplayer(self, event): for k in range(0, 300, 100): for j in range(0, 300, 100): if self.i % 2 == 0: if event.x in range(k, k + 100) and event.y in range( j, j + 100): if self.canvas.find_enclosed(k, j, k + 100, j + 100) == (): X = (2 * k + 100) / 2 Y = (2 * j + 100) / 2 X1 = int(k / 100) Y1 = int(j / 100) self.canvas.create_oval(X + 25, Y + 25, X - 25, Y - 25, width=4, outline="black") self.TTT[Y1][X1] += 1 self.i += 1 self.check() self.trigger = False else: print(self.i) self.check() print("checked") self.AIcheck() print("AIchecked") self.trigger = False def check(self): #horizontal check for i in range(0, 3): if sum(self.TTT[i]) == 27: self.label['text'] = ('2nd player wins!') self.end() if sum(self.TTT[i]) == 3: self.label['text'] = ('1st player wins!') self.end() #vertical check #the matrix below transposes self.TTT so that it could use the sum fucntion again self.ttt = [[row[i] for row in self.TTT] for i in range(3)] for i in range(0, 3): if sum(self.ttt[i]) == 27: self.label['text'] = ('2nd player wins!') self.end() if sum(self.ttt[i]) == 3: self.label['text'] = ('1st player wins!') self.end() #check for diagonal wins if self.TTT[1][1] == 9: if self.TTT[0][0] == self.TTT[1][1] and self.TTT[2][2] == self.TTT[ 1][1]: self.label['text'] = ('2nd player wins!') self.end() if self.TTT[0][2] == self.TTT[1][1] and self.TTT[2][0] == self.TTT[ 1][1]: self.label['text'] = ('2nd player wins!') self.end() if self.TTT[1][1] == 1: if self.TTT[0][0] == self.TTT[1][1] and self.TTT[2][2] == self.TTT[ 1][1]: self.label['text'] = ('1st player wins!') self.end() if self.TTT[0][2] == self.TTT[1][1] and self.TTT[2][0] == self.TTT[ 1][1]: self.label['text'] = ('1st player wins!') self.end() #check for draws if self.j == False: a = 0 for i in range(0, 3): a += sum(self.TTT[i]) if a == 41: self.label['text'] = ("It's a pass!") self.end() def AIcheck(self): #This is built on the self.check function self.ttt = [[row[i] for row in self.TTT] for i in range(3)] #DEFENSE #this is the horizontal checklist for h in range(0, 3): k = 0 j = 0 if sum(self.TTT[h]) == 2: while k < 3: if k == h: while j < 3: if self.trigger == False: if self.TTT[k][j] == 0: self.cross(j, k) break j += 1 k += 1 #this is the vertical checklist for h in range(0, 3): k = 0 j = 0 if sum(self.ttt[h]) == 2: while k < 3: if k == h: while j < 3: if self.trigger == False: if self.ttt[k][j] == 0: self.cross(k, j) break j += 1 k += 1 #this is the diagonal checklist if self.TTT[1][1] == 1: if self.TTT[0][0] == 1: if self.trigger == False: if self.TTT[2][2] == 0: self.cross(2, 2) if self.TTT[0][2] == 1: if self.trigger == False: if self.TTT[2][0] == 0: self.cross(0, 2) if self.TTT[2][0] == 1: if self.trigger == False: if self.TTT[0][2] == 0: self.cross(2, 0) if self.TTT[2][2] == 1: if self.trigger == False: if self.TTT[0][0] == 0: self.cross(0, 0) if self.TTT[1][1] == 0: if self.trigger == False: self.cross(1, 1) self.trigger = True else: if self.trigger == False: self.randmove() def cross(self, k, j): # k is the x coords # j is the y coords X = (200 * k + 100) / 2 Y = (200 * j + 100) / 2 X1 = int(k) Y1 = int(j) self.canvas.create_line(X + 20, Y + 20, X - 20, Y - 20, width=4, fill="black") self.canvas.create_line(X - 20, Y + 20, X + 20, Y - 20, width=4, fill="black") self.TTT[Y1][X1] += 9 self.check() self.i += 1 self.trigger = True def randmove(self): while True: k = (randint(0, 2)) j = (randint(0, 2)) if self.TTT[j][k] == 0: X = (200 * k + 100) / 2 Y = (200 * j + 100) / 2 self.canvas.create_line(X + 20, Y + 20, X - 20, Y - 20, width=4, fill="black") self.canvas.create_line(X - 20, Y + 20, X + 20, Y - 20, width=4, fill="black") self.TTT[j][k] += 9 self.check() self.i += 1 self.trigger = True break else: k = (randint(0, 2)) * 100 j = (randint(0, 2)) * 100