Untitled

 avatar
unknown
plain_text
a year ago
2.4 kB
5
Indexable
class TicTacToe:
  def __init__(self):
      self.board = {'1': ' ', '2': ' ', '3': ' ',
                    '4': ' ', '5': ' ', '6': ' ',
                    '7': ' ', '8': ' ', '9': ' '}

  def print_board(self):
      print(f" {self.board['1']} | {self.board['2']} | {self.board['3']}")
      print(" - + - + -    ")
      print(f" {self.board['4']} | {self.board['5']} | {self.board['6']}")
      print(" - + - + -    ")
      print(f" {self.board['7']} | {self.board['8']} | {self.board['9']}")

  def check_winner(self):
    winning_conditions = [
        (self.board['1'], self.board['2'], self.board['3']),
        (self.board['4'], self.board['5'], self.board['6']),
        (self.board['7'], self.board['8'], self.board['9']),
        (self.board['1'], self.board['4'], self.board['7']),
        (self.board['2'], self.board['5'], self.board['8']),
        (self.board['3'], self.board['6'], self.board['9']),
        (self.board['1'], self.board['5'], self.board['9']),
        (self.board['3'], self.board['5'], self.board['7']),
    ]
    for condition in winning_conditions:
        if condition[0] == condition[1] == condition[2] != ' ':
            return condition[0]  # Return the winning mark
    return None  # No winner found
  
  def run(self):
    turn = 'X'
    count = 0
    while True:
        game.print_board()
        print(f"It is Player {turn}'s turn. Please enter the block to move to (1-9):")
        move = input()
  
        # Check if the move position is valid (between 1 and 9)
        if move not in ['1', '2', '3', '4', '5', '6', '7', '8', '9']:
            print("Invalid input. Please enter a number between 1 and 9.")
            continue
  
        # Check if the position is already occupied
        if self.board[move] != ' ':
            print("That block is already filled. Please choose another one.")
            continue
  
        # Update the game board
        self.board[move] = turn
  
        count += 1
  
        # Check for winner or tie
        winner = self.check_winner()
        if winner is not None:
            game.print_board()
            print(f"Game Over. Player {winner} wins!")
            break
        elif count == 9:
            game.print_board()
            print("It's a tie!")
            break
  
          # Switch turns
            turn = 'O' if turn == 'X' else 'X'
        
game=TicTacToe()
game.run()


Editor is loading...
Leave a Comment