Skip to content

Commit b4a7024

Browse files
committedOct 1, 2020
Add Tic-Tac-Toe game
1 parent 4c63c98 commit b4a7024

File tree

2 files changed

+116
-0
lines changed

2 files changed

+116
-0
lines changed
 

‎TicTacToe-Game/README.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
## Tic-Tac-Toe Game
2+
A simple tic-tac-toe game written in Python3.
3+
4+
Execute the following command in terminal/shell to play:
5+
`python3 ./ttt.py`
6+
or
7+
`python ./ttt.py`

‎TicTacToe-Game/ttt.py

+109
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
print ("Press ESC to exit.")
2+
import cv2
3+
import numpy as np
4+
font = cv2.FONT_HERSHEY_SIMPLEX
5+
player = 'O'
6+
game = [[1,2,3],[4,5,6],[7,8,9]]
7+
winnerflag = 0
8+
checkflag = 9
9+
def getxy(x,y) :
10+
if x >= 0 and x < 200 :
11+
x = 0
12+
elif x >= 200 and x < 400 :
13+
x = 200
14+
else :
15+
x = 400
16+
if y >= 0 and y < 200 :
17+
y = 195
18+
elif y >= 200 and y < 400 :
19+
y = 395
20+
else :
21+
y = 595
22+
return x,y
23+
def putgame(a,b) :
24+
global game
25+
if a == 0 and b == 195 :
26+
game[0][0] = player
27+
elif a == 200 and b == 195 :
28+
game[0][1] = player
29+
elif a == 400 and b == 195 :
30+
game[0][2] = player
31+
elif a == 0 and b == 395 :
32+
game[1][0] = player
33+
elif a == 200 and b == 395 :
34+
game[1][1] = player
35+
elif a == 400 and b == 395 :
36+
game[1][2] = player
37+
elif a == 0 and b == 595 :
38+
game[2][0] = player
39+
elif a == 200 and b == 595 :
40+
game[2][1] = player
41+
elif a == 400 and b == 595 :
42+
game[2][2] = player
43+
def winner(game) :
44+
global winnerflag
45+
if game[0][0] == game[1][1] and game[1][1] == game[2][2] :
46+
winnerflag = 1
47+
elif game[0][0] == game[0][1] and game[0][1] == game[0][2] :
48+
winnerflag = 1
49+
elif game[0][0] == game[1][0] and game[1][0] == game[2][0] :
50+
winnerflag = 1
51+
elif game[0][1] == game[1][1] and game[1][1] == game[2][1] :
52+
winnerflag = 1
53+
elif game[0][2] == game[1][2] and game[1][2] == game[2][2] :
54+
winnerflag = 1
55+
elif game[1][0] == game[1][1] and game[1][1] == game[1][2] :
56+
winnerflag = 1
57+
elif game[2][0] == game[2][1] and game[2][1] == game[2][2] :
58+
winnerflag = 1
59+
elif game[2][0] == game[1][1] and game[1][1] == game[0][2] :
60+
winnerflag = 1
61+
else :
62+
winnerflag = 0
63+
def drawcheck(game) :
64+
global checkflag
65+
checkflag = 9
66+
for i in game :
67+
for j in i :
68+
if (j == 'X' or j == 'O') :
69+
checkflag -= 1
70+
def place(event,x,y,flags,param) :
71+
global player,nx,ny
72+
if event == cv2.EVENT_LBUTTONDOWN :
73+
nx,ny = getxy(x,y)
74+
if player == 'O' :
75+
cv2.putText(img,player,(nx,ny),font,9,(255,0,0),3)
76+
putgame(nx,ny)
77+
winner(game)
78+
drawcheck(game)
79+
print(checkflag)
80+
if winnerflag == 1 :
81+
print(player + " WINS!\n\n")
82+
elif checkflag == 0 :
83+
print("Game is a draw.")
84+
else :
85+
player = 'X'
86+
else :
87+
cv2.putText(img,player,(nx,ny),font,9,(255,0,0),3)
88+
putgame(nx,ny)
89+
winner(game)
90+
drawcheck(game)
91+
print(checkflag)
92+
if winnerflag == 1 :
93+
print(player + " WINS!\n\n")
94+
elif checkflag == 0 :
95+
print("Game is a draw.")
96+
else :
97+
player = 'O'
98+
cv2.namedWindow("TTT",cv2.WINDOW_NORMAL)
99+
cv2.setMouseCallback("TTT",place)
100+
img = np.zeros((600,600,3), np.uint8)
101+
cv2.line(img,(200,0),(200,600),(0,255,0),5)
102+
cv2.line(img,(400,0),(400,600),(0,255,0),5)
103+
cv2.line(img,(0,200),(600,200),(0,255,0),5)
104+
cv2.line(img,(0,400),(600,400),(0,255,0),5)
105+
while True :
106+
cv2.imshow("TTT",img)
107+
if(cv2.waitKey(1) == 27 or winnerflag == 1 or checkflag == 0) :
108+
break
109+
cv2.destroyWindow("TTT")

0 commit comments

Comments
 (0)
Please sign in to comment.