Skip to content

Instantly share code, notes, and snippets.

@linjujose
Created February 28, 2019 19:39
Show Gist options
  • Save linjujose/2dd311faa5b71a0877c4627c3451a24e to your computer and use it in GitHub Desktop.
Save linjujose/2dd311faa5b71a0877c4627c3451a24e to your computer and use it in GitHub Desktop.
class tic_tac_toe:
def __init__(self):
self.arr = [[0,0,0],
[0,0,0],
[0,0,0]]
self.player = True
def print_board(self):
for i in range(3):
print(self.arr[i])
print("-------------")
return
def move(self,row,col,player):
if (self.arr[row][col] != 0):
print("Invalid move")
return
#update board, change turn and print board after every turn
self.arr[row][col] = player
self.player = not self.player
self.print_board()
def check_stalemate(self):
count = 0
for i in range(3):
for j in range(3):
if (self.arr[i][j] == 0):
return False
return True
def check_winner(self, player):
if(self.diagonal_check(player) or self.vertical_check(player) or self.horizontal_check(player)):
print(f"Player {player} wins!")
return True
return False
# horizontal
def horizontal_check(self, player):
for i in range(3):
win = True
for j in range(3):
if (self.arr[i][j] != player):
win = False
# if winner is true in any row, return
if(win):
return win
return win
# vertical
def vertical_check(self, player):
for i in range(3):
win = True
for j in range(3):
if( self.arr[j][i] != player):
win = False
if(win):
return win
return win
# diagonal
def diagonal_check(self, player):
right_win = True
left_win = True
for i in range(3):
if (self.arr[i][i] != player):
right_win = False
if (self.arr[i][2-i] != player):
left_win = False
if (left_win or right_win):
return True
else:
return False
def play_game(self):
self.print_board()
player1 = 1 # True
player2 = 2 # False
winner = False
while(not winner):
if(self.check_stalemate()):
print("Stalemate, Game Over")
exit(0)
x,comma,y = input("Enter position as x,y: ")
# After move, turn has been taken but if condition is already checked
if(self.player):
self.move(int(x),int(y), player1)
winner = self.check_winner(player1)
else:
self.move(int(x),int(y), player2)
winner = self.check_winner(player2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment