Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit c61f230

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /