From 4be680791c31e7646178ec69200b010f2210619f Mon Sep 17 00:00:00 2001 From: Veeresh R M <75434799+veeresh-27@users.noreply.github.com> Date: Fri, 29 Oct 2021 21:55:40 +0530 Subject: [PATCH] Created tictactoe game in python --- tictactoe.py | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 tictactoe.py diff --git a/tictactoe.py b/tictactoe.py new file mode 100644 index 0000000..6c4736f --- /dev/null +++ b/tictactoe.py @@ -0,0 +1,124 @@ +import random + + +class TicTacToe: + + def __init__(self): + self.board = [] + + def create_board(self): + for i in range(3): + row = [] + for j in range(3): + row.append('-') + self.board.append(row) + + def get_random_first_player(self): + return random.randint(0, 1) + + def fix_spot(self, row, col, player): + self.board[row][col] = player + + def is_player_win(self, player): + win = None + + n = len(self.board) + + # checking rows + for i in range(n): + win = True + for j in range(n): + if self.board[i][j] != player: + win = False + break + if win: + return win + + # checking columns + for i in range(n): + win = True + for j in range(n): + if self.board[j][i] != player: + win = False + break + if win: + return win + + # checking diagonals + win = True + for i in range(n): + if self.board[i][i] != player: + win = False + break + if win: + return win + + win = True + for i in range(n): + if self.board[i][n - 1 - i] != player: + win = False + break + if win: + return win + return False + + for row in self.board: + for item in row: + if item == '-': + return False + return True + + def is_board_filled(self): + for row in self.board: + for item in row: + if item == '-': + return False + return True + + def swap_player_turn(self, player): + return 'X' if player == 'O' else 'O' + + def show_board(self): + for row in self.board: + for item in row: + print(item, end=" ") + print() + + def start(self): + self.create_board() + + player = 'X' if self.get_random_first_player() == 1 else 'O' + while True: + print(f"Player {player} turn") + + self.show_board() + + # taking user input + row, col = list( + map(int, input("Enter row and column numbers to fix spot: ").split())) + print() + + # fixing the spot + self.fix_spot(row - 1, col - 1, player) + + # checking whether current player is won or not + if self.is_player_win(player): + print(f"Player {player} wins the game!") + break + + # checking whether the game is draw or not + if self.is_board_filled(): + print("Match Draw!") + break + + # swapping the turn + player = self.swap_player_turn(player) + + # showing the final view of board + print() + self.show_board() + + +# starting the game +tic_tac_toe = TicTacToe() +tic_tac_toe.start()