Skip to content

Commit c61f230

Browse files
authored
Create TictactoeGUI.py
1 parent 6642c59 commit c61f230

File tree

1 file changed

+123
-0
lines changed

1 file changed

+123
-0
lines changed
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
from tkinter import Tk, Label, Button,Frame
2+
import random
3+
4+
#creating a window
5+
screen = Tk()
6+
#adding a title to window
7+
screen.title(" "*40+"Tic Tac Toe Game")
8+
#fixing the constant size of the screen
9+
screen.geometry("400x500")
10+
11+
def newGame():
12+
global player
13+
player = random.choice(players)
14+
label.config(text=player+" turn")
15+
16+
for row in range(3):
17+
for column in range(3):
18+
buttons[row][column].config(text="", bg="#F0F0F0")
19+
20+
def next_turn(row, column):
21+
global player
22+
23+
if buttons[row][column]["text"] == "" and check_winner() is False:
24+
25+
if player == players[0]:
26+
buttons[row][column]["text"] = player
27+
28+
if check_winner() is False:
29+
player = players[1]
30+
label.config(text=(players[1]+" turn"))
31+
32+
elif check_winner() is True:
33+
label.config(text=(players[0]+" wins"))
34+
elif check_winner() == "Tie":
35+
label.config(text=("TIE"))
36+
else:
37+
buttons[row][column]["text"] = player
38+
39+
if check_winner() is False:
40+
player = players[0]
41+
label.config(text=(players[0]+" turn"))
42+
43+
elif check_winner() is True:
44+
label.config(text=(players[1]+" wins"))
45+
elif check_winner() == "Tie":
46+
label.config(text=("TIE"))
47+
48+
49+
def check_winner():
50+
51+
for row in range(3):
52+
if buttons[row][0]["text"] == buttons[row][1]["text"] ==buttons[row][2]["text"] != "":
53+
buttons[row][0].config(bg="green")
54+
buttons[row][1].config(bg="green")
55+
buttons[row][2].config(bg="green")
56+
return True
57+
58+
for column in range(3):
59+
if buttons[0][column]["text"] == buttons[1][column]["text"] == buttons[2][column]["text"] != "":
60+
buttons[0][column].config(bg="green")
61+
buttons[1][column].config(bg="green")
62+
buttons[2][column].config(bg="green")
63+
return True
64+
if buttons[0][0]["text"] == buttons[1][1]["text"] == buttons[2][2]["text"] != "":
65+
buttons[0][0].config(bg="green")
66+
buttons[1][1].config(bg="green")
67+
buttons[2][2].config(bg="green")
68+
return True
69+
elif buttons[0][2]["text"] == buttons[1][1]["text"] == buttons[2][0]["text"] != "":
70+
buttons[0][2].config(bg="green")
71+
buttons[1][1].config(bg="green")
72+
buttons[2][0].config(bg="green")
73+
return True
74+
75+
elif empty_space() is False:
76+
for row in range(3):
77+
for column in range(3):
78+
buttons[row][column].config(bg="red")
79+
80+
return "Tie"
81+
else:
82+
return False
83+
84+
85+
def empty_space():
86+
spaces = 9
87+
for row in range(3):
88+
for column in range(3):
89+
if buttons[row][column]["text"] != "":
90+
spaces -= 1
91+
if spaces == 0:
92+
return False
93+
else:
94+
return True
95+
96+
97+
98+
players=["X", "O"]
99+
player = random.choice(players)
100+
101+
label = Label(screen, text=player + " Turns ", font=('consolas',40))
102+
label.pack()
103+
104+
resetButton = Button(screen, text="restart", font=('consolas', 20), command=newGame)
105+
resetButton.pack(side="top")
106+
107+
frame = Frame(screen)
108+
frame.pack()
109+
buttons=[
110+
[0,0,0],
111+
[0,0,0],
112+
[0,0,0]
113+
]
114+
115+
for row in range(3):
116+
for column in range(3):
117+
buttons[row][column] = Button(frame, text="", font=("consolas",40), width=4, height=1, command= lambda row=row, column=column: next_turn(row,column))
118+
buttons[row][column].grid(row=row,column=column)
119+
120+
121+
122+
#stopping the screen to wait until close button is clicked
123+
screen.mainloop()

0 commit comments

Comments
 (0)