-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
168 lines (141 loc) · 4.43 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#----- Global Variables -----
# Display Board
board = ["-","-","-",
"-","-","-",
"-","-","-",]
# If Game is still going
game_still_going_on = True
# Who Won ? or Tie ?
winner = None
# Who's turn is it ?
current_player = "X"
#Game Board
def display_board():
print(board[0] + " | " + board[1] + " | " + board[2])
print(board[3] + " | " + board[4] + " | " + board[5])
print(board[6] + " | " + board[7] + " | " + board[8])
# Handle Single Turn of a Player
def handle_turn(player):
print(player + "'s Turn.")
position = input("Choose a position from 1-9:" )
valid = False
while not valid:
# This would keep on repeating the same response until you input
# the correct answer, you could use an if statement but it breaks
# when you input an incorrect response the second time.
while position not in ["1", "2", "3", "4", "5", "6", "7", "8", "9"]:
position = input("Choose a Number between 1-9.")
position = int(position) - 1
if board[position] == "-":
valid = True
else:
print("You're Cheating. You can't go There")
board[position] = player
display_board()
# Check if game is over
def check_if_game_over():
check_if_win()
check_if_tie()
# Check if a player is Won
def check_if_win():
# Setup Global Variables
global winner
row_winner = check_rows()
column_winner = check_columns()
diagonal_winner = check_diagonals()
if row_winner:
winner = row_winner
elif column_winner:
winner = column_winner
elif diagonal_winner:
winner = diagonal_winner
else:
winner = None
return
# Check Rows
def check_rows():
# Setup Global Variables
global game_still_going_on
# Check if any row has the same value and is not empty
row_1 = bool(board[0] == board[1] == board[2] !="-")
row_2 = board[3] == board[4] == board[5] !="-"
row_3 = board[6] == board[7] == board[8] !="-"
# Returns a Winner ( X or O )
if row_1 or row_2 or row_3:
game_still_going_on = False
if row_1:
return board[0]
elif row_2:
return board[3]
elif row_3:
return board[6]
return
# Check Columns
def check_columns():
# Setup Global Variables
global game_still_going_on
# Check if any columns has the same value and is not empty
column_1 = board[0] == board[3] == board[6] !="-"
column_2 = board[1] == board[4] == board[7] !="-"
column_3 = board[2] == board[5] == board[8] !="-"
# Returns a Winner ( X or O )
if column_1 or column_2 or column_3:
game_still_going_on = False
if column_1:
return board[0]
elif column_2:
return board[1]
elif column_3:
return board[2]
return
# Check Diagonals
def check_diagonals():
# Setup Global Variables
global game_still_going_on
# Check if any diagonals has the same value and is not empty
diag_1 = board[0] == board[4] == board[8] !="-"
diag_2 = board[2] == board[4] == board[6] !="-"
# Returns a Winner ( X or O )
if diag_1 or diag_2:
game_still_going_on = False
if diag_1:
return board[0]
elif diag_2:
return board[6]
return
# Check if a Game is Tie
def check_if_tie():
global game_still_going_on
if "-" not in board:
game_still_going_on = False
return
# Flip Player from Current Player to other Player
def flip_player():
# Setup Global Variables
global current_player
# If current player is X change it to O
if current_player == "X":
current_player = "O"
# And If current player is O change it to X
elif current_player =="O":
current_player = "X"
return
# Play a game of Tic Tac Toe
def play_game():
# This function displays the initial Game board
display_board()
#While game is still going on
while game_still_going_on:
# Handles Current Player
handle_turn(current_player)
# Checks if the Game is over
check_if_game_over()
# Flip Player from
flip_player()
# The game has ended
if winner=="X" or winner=="O":
print(winner + " Won.")
elif winner==None:
print("Tie.")
# By Calling this function you initiate the game.
play_game()