-
Notifications
You must be signed in to change notification settings - Fork 0
/
Tic Tac Toe.py
157 lines (130 loc) · 4.15 KB
/
Tic Tac Toe.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
# Tic tac toe
# Takes user input in digits: 1-9
# Checks input against preexisting board
# If empty then places a Q and sets a new X at random
# Otherwise asks to "Use a different number"
# If there is a set of 3 connected Q or X then declares win or lose condition
# If neither than continues to the end
# Finishes the game and resets
from random import seed
from random import randint
seed(1)
num1 = 1
num2 = 2
num3 = 3
num4 = 4
num5 = 5
num6 = 6
num7 = 7
num8 = 8
num9 = 9
xvalue = 2
place = [num1, num2, num3, num4, num5, num6, num7, num8, num9]
class Error(Exception):
pass
class ValueUsed(Error):
pass
def display_result():
print()
print(place[0:3])
print(place[3:6])
print(place[6:9])
print()
def main():
f = True
try:
qValue = int(input("Enter a number to place a Q: "))
print()
indices = [i for i, x in enumerate(place) if x == 'Q']
indices2 = [i for i, x in enumerate(place) if x == 'X']
for num in place:
if num == qValue:
place[num - 1] = "Q"
while f == True:
xvalue = randint(1, 10)
for dum in place:
if dum == xvalue:
place[dum - 1] = "X"
f = False
elif num != qValue:
if qValue-1 in indices:
# print("Got'em")
raise ValueUsed
elif qValue-1 in indices2:
# print("Got'em too")
raise ValueUsed
#
# elif num == 'X':
# if int(place.index('X', num)) == qValue-1:
# print('Mistake')
# raise ValueUsed
# print(place[0:3])
# print(place[3:6])
# print(place[6:9])
except ValueUsed:
print("Try again, use a number from 1-9 that has not yet been used")
display_result()
main()
except:
print("Try again, use a number from 1-9 to place a Q in the grid")
display_result()
main()
def check():
if place[0:3] == ['Q', 'Q', 'Q']:
return True
elif place[3:6] == ['Q', 'Q', 'Q']:
return True
elif place[6:9] == ['Q', 'Q', 'Q']:
return True
elif place[0] == 'Q' and place[3] == 'Q' and place[6] == 'Q':
return True
elif place[1] == 'Q' and place[4] == 'Q' and place[7] == 'Q':
return True
elif place[2] == 'Q' and place[5] == 'Q' and place[8] == 'Q':
return True
elif place[0] == 'Q' and place[4] == 'Q' and place[8] == 'Q':
return True
elif place[2] == 'Q' and place[4] == 'Q' and place[6] == 'Q':
return True
def check2():
if place[0:3] == ['X', 'X', 'X']:
return True
elif place[3:6] == ['X', 'X', 'X']:
return True
elif place[6:9] == ['X', 'X', 'X']:
return True
elif place[0] == 'X' and place[3] == 'X' and place[6] == 'X':
return True
elif place[1] == 'X' and place[4] == 'X' and place[7] == 'X':
return True
elif place[2] == 'X' and place[5] == 'X' and place[8] == 'X':
return True
elif place[0] == 'X' and place[4] == 'X' and place[8] == 'X':
return True
elif place[2] == 'X' and place[4] == 'X' and place[6] == 'X':
return True
while True:
i = 0
while i < 4:
i += 1
display_result()
main()
check()
check2()
if check() is True:
i = 9
display_result()
print("! (^ O ^) You win (^ O ^) !")
print()
elif check2() is True:
display_result()
print("~ (-_-) You lose (-_-) ~)")
i = 9
print()
else:
print("\Q/X\Q/X\Q/X\ Game Over /X\Q/X\Q/X\Q/")
print()
place = [num1, num2, num3, num4, num5, num6, num7, num8, num9]
if input("Repeat the program? (Y/N): ").strip().upper() != 'Y':
print("Done")
break