Como fazer um jogo Tic Tac Toe em Python com exemplo de código

O jogo Tic Tac Toe em Python é um projeto interessante que você pode experimentar. É um projeto legal e divertido de resolver um desafio e pode ajudá-lo a dominar o básico concepts em Python. Criar um divertido jogo da velha ajuda você a desenvolver suas habilidades.

Você pode usar um bom editor Python como Pycharm ou a interface de linha de comando.

Como jogar o jogo Tic Toc?

O jogo Tic tac toe é um jogo simples para dois jogadores que qualquer um pode jogar sem precisar de um tabuleiro de jogo. Envolve dois jogadores marcando células diferentes até que o jogo termine, em caso de vitória ou empate.

Veja como jogar o jogo da velha.

Passo 1) O jogo da velha começa com células vazias em uma grade quadrada. Este é o jogo da velha.

Passo 2) Ambos os jogadores escolhem entre dois símbolos, geralmente Xs ou Os. Você pode usar qualquer outro símbolo exclusivo do jogo.

Passo 3) O jogador atual marca em turnos preenchendo as células do tabuleiro do jogo da velha até que um jogador preencha uma combinação vencedora. É uma linha, coluna ou diagonal inteira com o mesmo sinal.

Passo 4) Um empate no jogo também é possível caso todas as células estejam cheias sem nenhum vencedor aparente

Requisitos

Construindo o Projeto Python do jogo da velha requer um conhecimento de nível iniciante da linguagem de programação Python. Inclui a compreensão de loops e iterações “for” e qual instrução if é usada em Python.

Você também precisa ter Python e um editor de texto Python instalados em seu computador para concluir o projeto Python do jogo da velha. Como este é um jogo da velha para iniciantes em Python, você não precisará de nenhuma biblioteca Python.

Você pode precisar de algumas habilidades de depuração para encontrar soluções para bugs em seu código e também deve ter um conhecimento adequado dos componentes do jogo.

Algoritmo Python Tic Tac Toe

Siga estas etapas para criar um jogo da velha na linguagem de programação Python:

Passo 1) Crie o tabuleiro para começar o jogo da velha.

Passo 2) Solicite ao usuário que decida as dimensões do tabuleiro de jogo.

Passo 3) Escolha aleatoriamente o primeiro jogador.

Passo 4) O jogo Tic tac toe começa.

Passo 5) Os jogadores jogam selecionando um espaço vazio no tabuleiro.

Passo 6) Preencha o espaço vazio selecionado com o sinal do jogador.

Passo 7) Determine se um jogador ganha ou empata no jogo usando a lógica do jogo.

Passo 8) Exiba o tabuleiro de jogo após cada jogada se nenhum jogador ganhar ou empatar com o segundo jogador.

Passo 9) Exiba uma mensagem de empate ou vitória, respectivamente.

Passo 10) Termine o jogo da velha com opções para iniciar um novo jogo.

Código Python completo para jogo da velha

# Guru99
# Code developed by Guru99.com
# Guru99 tic-tac-toe game
#Get input
def getInput(prompt, cast=None, condition=None, errorMessage=None):
  while True:
      try:
          val = cast(input(prompt))
          assert condition is None or condition(val)
          return val
      except:
          print(errorMessage or "Invalid input.")
# Print the game board
def printBoard(board):
  print()
  for row in board:
      print(*row)
  print()
# Check if player won using the winning combinations
def checkWin(board):
  # Check rows
  for row in range(len(board)):
      for col in range(len(board)-1):
          if board[row][col] == "_" or board[row][col+1] == "_" or board[row][col] != board[row][col+1]:
              break
      else:
          return True
  # Check column numbers
  for col in range(len(board)):
      for row in range(len(board)-1):
          if board[row][col] == "_" or board[row+1][col] == "_" or board[row][col] != board[row+1][col]:
              break
      else:
          return True
  # Check left diagonal
  for cell in range(len(board)-1):
      if board[cell][cell] == "_" or board[cell+1][cell+1] == "_" or board[cell][cell] != board[cell+1][cell+1]:
          break
  else:
      return True
  # Check right diagonal
  for cell in range(len(board)-1):
      emptyCell = board[cell][len(board)-cell-1] == "_" or board[cell+1][len(board)-cell-2] == "_"
      different = board[cell][len(board)-cell-1] != board[cell+1][len(board)-cell-2]
      if emptyCell or different:
          break
  else:
      return True
  # No win
  return False
# Play tic tac toe game
def play():
  # Introduction
  print("------------\nN-DIMENSIONAL TIC TAC TOE game by guru 99.com \n------------")
  # Set up variables
  N = getInput(prompt="Guru99 says>>> Enter N, the dimensions of the board: ",
               cast=int,
               condition=lambda x: x >= 3,
               errorMessage="Invalid input. Please enter an integer greater than or equal to 3 as explained on guru99.com")
  board = [['_'] * N for _ in range(N)]
  used = 0
  turn = 0
  # Play guru99 tic tac toe game in Python using while infinite loop
  while True:
      # Print guru99 tic tac toe game board
      printBoard(board)
      # Get user pick
      pick = getInput(prompt=f"Player {turn+1} - Pick location (row, col): ",
                      cast=lambda line: tuple(map(int, line.split(" "))),
                      condition=lambda pair: min(pair) >= 0 and max(pair) < N and board[pair[0]][pair[1]] == "_",
                      errorMessage="Invalid input. Please enter a valid, unoccupied location as an integer pair.")
      # Populate location
      board[pick[0]][pick[1]] = "X" if turn == 0 else "O"
      used += 1
      # Check for win
      #Guru99 tutorial
      if checkWin(board):
          printBoard(board)
          print(f"Game over, Player {turn+1} wins.")
          break
      # Check for tie
      elif used == N*N:
          printBoard(board)
          print("Game over. Players have tied the match.")
          print("Guru99.com tic tac toe game ")
          break
      # If no win yet, update next user
      turn = (turn+1)%2
  # Check for rematch
  playAgain = getInput(prompt="Play Guru99 tic tac toe_Game again? (y/n): ",
                       cast=str,
                       condition=lambda ans: ans.strip("\n").lower() in {"y", "n"},
                       errorMessage="Invalid input. Please enter 'y' or 'n'.")
  if playAgain == 'n':
      # End the game
      print("\nGuru99 TicTacToe game ended.")
      return
  else:
      # Rematch
      play()
# Main
if __name__ == '__main__':
  play()

Saída do código Python Tic Tac Toe

Depois de executar o código-fonte acima, abaixo está a saída esperada para um jogo da velha 3 X 3:

------------
N-DIMENSIONAL TIC TAC TOE game by guru 99.com
------------
Guru99 says>>> Enter N, the dimensions of the board: 3

_ _ _

_ _ _

_ _ _

Player 1 - Pick location (row, col): 1 1

_ _ _

_ X _

_ _ _

Player 2 - Pick location (row, col): 0 1

_ O _

_ X _

_ _ _

Player 1 - Pick location (row, col): 1 2

_ O _

_ X X

_ _ _

Player 2 - Pick location (row, col): 0 2

_ O O

_ X X

_ _ _

Player 1 - Pick location (row, col): 1 0

_ O O

X X X

_ _ _

Game over, Player 1 wins.
Play Guru99 tic tac toe_Game again? (y/n):

Detalhamento completo do código

Criar O jogo da velha em Python é simples. Vamos dissecar as diferentes funções em partes para entender o que está acontecendo em cada linha:

Imprimindo o quadro

O tabuleiro Tic tac toe é a tela principal do jogo. Em, a janela de exibição do Python é usada para mostrar o tabuleiro do jogo.

Aqui estão as etapas que ajudam você a criar um quadro para o jogo da velha em Python:

Código Python para Tic Tac Toe

def getInput(prompt, cast=None, condition=None, errorMessage=None):
   while True:
       try:
           val = cast(input(prompt))
           assert condition is None or condition(val)
           return val
       except:
           print(errorMessage or "Invalid input.")
# Print the board
def printBoard(board):
   print()
   for row in board:
       print(*row)
   print()
N = getInput(prompt="Guru99 says>>> Enter N, the dimensions of the board: ",
            cast=int,
            condition=lambda x: x >= 3,
            errorMessage="Invalid input. Please enter an integer greater than or equal to 3 as explained on guru99.com")
board = [['_'] * N for _ in range(N)]
used = 0
turn = 0
printBoard(board)

Saída de código:

------------
N-DIMENSIONAL TIC TAC TOE game by guru 99.com
------------
Guru99 says>>> Enter N, the dimensions of the board: 3

_ _ _

_ _ _

_ _ _

Jogo Tic Tac Toe – arranjo vencedor

Para verificar se algum jogador ganhou, precisamos verificar as combinações vencedoras nas linhas, colunas e diagonais. Se houver um vencedor, precisamos mostrar uma mensagem vencedora.

Linhas

  • Para a linha, a função pega cada par consecutivo de colunas e verifica se há uma combinação vencedora.
  • O primeiro jogador a preencher as linhas vence. O segundo jogador perde assim.
  • Se um par de colunas consecutivas for igual, é óbvio que todos os elementos dessa linha são iguais.
  • Se dois deles forem diferentes ou a linha contiver uma célula vazia, ainda não há vencedor.
  • Em seguida, implementamos condições de perda e adicionamos uma pausa. Se alguma destas condições de derrota for verdadeira, não tivemos um vencedor na linha marcada.
  • A declaração else fornece um retorno verdadeiro para mostrar que há um vencedor.
  • A quebra sai deste loop para prosseguir para a próxima linha.

colunas

Para as colunas, repetimos a mesma função das linhas. Verificamos se um jogador ganhou depois que cada jogador escolhe seu lugar.

Vitórias na linha diagonal

Para a diagonal esquerda a tarefa fica mais simples. Sempre estaremos comparando as células nas diagonais. Porém, caso não haja vencedor, podemos prosseguir para a próxima instrução.

Jogue a lógica do jogo

Esta é a principal função do jogo. Para isso podemos utilizar variáveis ​​que armazenam informações.

  • A primeira variável é o tamanho da placa armazenado em “N”. O jogo obterá o tamanho do tabuleiro após solicitar ao usuário que insira um número.
  • Então, quando você insere o valor, ele é processado.
  • Também criamos uma mensagem de erro para mostrar aos jogadores quando algum número inválido é digitado.
  • Podemos então criar duas variáveis ​​que preenchem um “X” ou um “O” quando uma célula é preenchida.
  • Em seguida, mostre aos jogadores o tabuleiro do jogo. Depois disso, obtenha a opinião do jogador.
  • A lógica irá então marcar a célula selecionada como preenchida e verificar se há vitória ou empate.
  • Se não houver vencedor, o jogo pede ao próximo jogador para jogar. Caso haja vitória ou empate, o jogo pode perguntar aos usuários se desejam um novo jogo.

Conclusão

  • Tic tac toe é um jogo divertido para dois jogadores, colocando um símbolo único em uma célula vazia do tabuleiro.
  • Criar um jogo da velha em Python requer um conhecimento de nível iniciante de Python, um editor de texto e Python instalado.
  • O algoritmo ajuda você a escrever sistematicamente o código em qualquer linguagem.
  • Para criar o jogo, primeiro desenhe o tabuleiro e escreva o código para determinar os arranjos vencedores e perdedores.
  • Você pode testar o código do jogo da velha em Python jogando-o primeiro.