-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtic.py
116 lines (96 loc) · 2.68 KB
/
tic.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
#Global variables
board=[" "]*10
game_state=True
announce=''
#This will ignore the zero index
def reset_board():
global game_state,board
board= [" "]*10
game_state=True
def display_board():
# print(" ")
print " "+board[7]+"|"+board[8]+"|"+board[9]+" "
print"--------"
print " "+board[4]+"|"+board[5]+"|"+board[6]+" "
print"--------"
print " "+board[1]+"|"+board[2]+"|"+board[3]+" "
print('\n')
def win_check(board,player):
if( board[7] == board[8] == board[9] == player) or \
( board[4] == board[5] == board[6] == player) or \
( board[1] == board[2] == board[3] == player) or \
( board[7] == board[4] == board[1] == player) or \
( board[8] == board[5] == board[2] == player) or \
( board[9] == board[6] == board[3] == player) or \
( board[1] == board[5] == board[9] == player) or \
( board[7] == board[5] == board[3] == player):
return True
else:
return False
def full_board_check(board):
#in case of tie,check any empty space in board
if " " in board[1:]:
return False
else:
return True
def ask_player(mark):
global board
req="Choose where to keep your : "+ mark
while True :
try:
print('\n')
choice= int(raw_input(req))
except ValueError:
print("Enter number between 1-9")
continue
if board[choice]==" ":
board[choice] = mark
break
else:
print("THat place isn't empty")
continue
def player_choice(mark):
global board, game_state,announce
announce=''
#get player i/p
mark=str(mark)
#place input at correct position
ask_player(mark)
if win_check(board,mark):
display_board()
announce = mark + " wins! congratulations "
game_state=False
#Show board
print('\n'*100)
display_board()
#in case of tie
if full_board_check(board):
announce = " TIE!"
game_state = False
return game_state,announce
def play_game():
reset_board()
global announce
#SET MARKS
X='X'
O='O'
while True:
print('\n'*100)
display_board()
#player X turn
game_state,announce=player_choice(X)
print announce
if game_state==False:
break
#player O turn
game_state,announce=player_choice(O)
print announce
if game_state==False:
break
#ASk for a rematch
rematch = raw_input("Do you want to play again? y/n ")
if rematch=='y':
play_game()
else :
print"Thank you for Playing!"
play_game()