Cómo hacer un juego de tres en raya en Python con Code Ejemplo

⚡ Resumen inteligente

Tres en raya en Python Es un proyecto ideal para principiantes que recrea el clásico juego de cuadrícula para dos jugadores. Su desarrollo fortalece habilidades básicas como bucles, condicionales, listas, funciones y recursión, a la vez que se comprueban filas, columnas y diagonales para determinar un ganador.

  • 🎮 jugabilidad: Dos jugadores marcan una X y una O en una cuadrícula cuadrada hasta que uno complete una fila, columna o diagonal.
  • 🧩 Lógica central: Las listas anidadas almacenan el tablero, mientras que los bucles y las condiciones controlan los turnos y detectan una victoria o un empate.
  • ???? ️ Pasos de construcción: Crea el tablero, elige al primer jugador, toma nota de sus datos, marca las casillas y luego comprueba si hay un ganador en cada ronda.
  • 🔁 Replay: Una llamada recursiva a play() reinicia la partida, y la validación de entrada bloquea los movimientos ocupados o fuera de rango.
  • 🤖 Relevancia de la IA: El mismo tablero constituye un campo de pruebas ideal para el algoritmo minimax y los agentes de aprendizaje por refuerzo.
  • 🛠️ Herramientas: Sólo Python y un editor como PyCharm No se necesitan bibliotecas externas.

Juego de tres en raya en Python

Juego de tres en raya en Python es un proyecto interesante que puedes probar. Es un proyecto genial y divertido para resolver un desafío y puede ayudarte a dominar conceptos básicos en PythonCrear un divertido juego de tres en raya te ayuda a desarrollar tus habilidades.

Puedes usar un buen Python editor como PyCharm o la interfaz de línea de comandos.

¿Cómo se juega al tres en raya?

El tres en raya es un juego sencillo para dos jugadores que cualquiera puede jugar sin necesidad de un tablero. Consiste en que dos jugadores marquen casillas diferentes hasta que uno gane o empate.

Aquí te explicamos cómo jugar al tres en raya.

Paso 1) El juego del Tres en Raya comienza con casillas vacías en una cuadrícula cuadrada. Este es el tablero del Tres en Raya.

Paso 2) Ambos jugadores eligen entre dos símbolos, normalmente X u O. Puedes usar cualquier otro símbolo único en el juego.

Paso 3) El jugador actual marca por turnos rellenando las casillas del tablero de Tres en Raya hasta completar una combinación ganadora. Esto significa una fila, columna o diagonal completa con el mismo símbolo.

Paso 4) También es posible que se produzca un empate en el juego si todas las celdas están llenas y no hay un ganador aparente.

Requisitos

Construyendo el Tres en Raya Python El proyecto requiere un nivel de comprensión básico de Python lenguaje de programación. Incluye la comprensión de los bucles "for" y las iteraciones, y para qué se utiliza una instrucción if en Python.

También necesitas tener Python y Python Editor de texto instalado en su computadora para completar el Tres en Raya Python proyecto. Como este es un juego de Tres en Raya de nivel principiante en Pythonno necesitarás ninguno Python biblioteca.

Es posible que necesites ciertas habilidades de depuración para encontrar soluciones a los errores en tu código, y también deberías tener un conocimiento adecuado de los componentes del juego.

Tic Tac Toe Python Algoritmo

Sigue estos pasos para crear un juego de Tres en Raya en Python lenguaje de programación:

Paso 1) Crea el tablero para comenzar el juego de Tres en Raya.

Paso 2) Solicite al usuario que decida las dimensiones del tablero de juego.

Paso 3) Elige aleatoriamente el primer jugador.

Paso 4) Comienza el juego del tres en raya.

Paso 5) Los jugadores juegan seleccionando un lugar vacío en el tablero.

Paso 6) Llena el lugar vacío seleccionado con el cartel del jugador.

Paso 7) Determina si un jugador gana o empata en el juego usando la lógica del juego.

Paso 8) Muestre el tablero de juego después de cada jugada si ningún jugador gana o empata con el segundo jugador.

Paso 9) Muestra un mensaje de empate o victoria, respectivamente.

Paso 10) Finaliza la partida de Tres en Raya con opciones para comenzar una nueva partida.

Pleno Python código para tres en raya

# 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()

Tic Tac Toe Python Code salida

Una vez ejecutado el código fuente anterior, a continuación se muestra el resultado esperado para un tablero de tres en raya de 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):

Pleno Code Breakdown

Creamos Tres en raya en Python Es sencillo. Analicemos las diferentes funciones por partes para comprender qué sucede en cada línea:

imprimiendo el tablero

El tablero de Tres en Raya es la pantalla principal del juego. PythonSe utiliza una ventana de visualización para mostrar el tablero de juego.

Aquí están los pasos que te ayudarán a crear un tablero para Tres en Raya en Python:

Python código para tres en raya

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)

Code salida:

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

_ _ _

_ _ _

_ _ _

Juego Tic Tac Toe – arreglo ganador

Para comprobar si algún jugador ganó, debemos comprobar las combinaciones ganadoras en las filas, columnas y diagonales. Si hay un ganador, debemos mostrar un mensaje ganador.

filas

  • Para la fila, la función toma cada par de columnas consecutivas y busca una combinación ganadora.
  • El primer jugador que llene las filas gana. Por tanto, el segundo jugador pierde.
  • Si dos columnas consecutivas son iguales, entonces es obvio que todos los elementos dentro de esa fila son iguales.
  • Si dos de ellos son diferentes o la fila contiene una celda vacía, todavía no hay ganador.
  • Luego implementamos condiciones perdedoras y agregamos una ruptura. Si alguna de estas condiciones perdedoras es cierta, no tuvimos un ganador en la fila marcada.
  • La declaración else da un retorno verdadero para mostrar que hay un ganador.
  • La pausa se sale de este bucle para pasar a la siguiente fila.

Columnas

Para las columnas repetimos la misma función que en las filas. Comprobamos si un jugador ganó después de que cada jugador elige su lugar.

La fila diagonal gana

Para la diagonal izquierda, la tarea se simplifica. Siempre compararemos las celdas de las diagonales. Sin embargo, si no hay un ganador, podemos pasar a la siguiente instrucción.

Jugar a la lógica del juego.

Esta es la función principal del juego. Para ello podemos utilizar variables que almacenen información.

  • La primera variable es el tamaño del tablero almacenado en "N". El juego obtendrá el tamaño del tablero después de pedirle al usuario que ingrese un número.
  • Entonces, cuando ingresa el valor, se procesa.
  • También creamos un mensaje de error para mostrar a los jugadores cuando se escribe un número no válido.
  • Luego podemos crear dos variables que completen una "X" o una "O" cuando se llena una celda.
  • Luego muestre a los jugadores el tablero de juego. Después de esto, obtenga la opinión del jugador.
  • Luego, la lógica marcará la celda seleccionada como llena y verificará si hay una victoria o un empate.
  • Si no hay un ganador, el juego le pide al siguiente jugador que juegue. Si se gana o empata, el juego puede preguntar a los usuarios si quieren un juego nuevo.

Preguntas Frecuentes

Sí. El Tres en Raya es un proyecto clásico para principiantes que convierte bucles, condicionales y funciones en un juego funcional. Genera confianza, refuerza la sintaxis básica y te prepara para proyectos más complejos sin necesidad de bibliotecas externas.

Refuerza las listas anidadas para el tablero, los bucles for y while para los turnos, las sentencias if para las comprobaciones de victoria, las funciones para la estructura y la recursión para reiniciar. Estos fundamentos se transfieren directamente a niveles más avanzados. Python

Sí. Además de la versión para consola, bibliotecas como Tkinter y Pygame añaden botones interactivos, una cuadrícula y control mediante ratón. La lógica del juego se mantiene; solo cambian las capas de visualización y entrada de datos.

El tres en raya es un juego resuelto. Cuando ambos jugadores juegan de forma óptima, cualquier amenaza puede ser bloqueada, por lo que nadie puede forzar la victoria. Por eso, una partida perfecta, ya sea entre humanos o computadoras, siempre termina en empate.

Una versión básica para consola le tomará a un principiante de una a tres horas una vez que se familiarice con los bucles y las condicionales. Agregar validación de entrada, un tablero escalable o una interfaz gráfica extiende el proyecto a lo largo de un fin de semana de práctica.

Sustituye a un jugador por una función minimax. Esta explora recursivamente cada movimiento posible, registrando victorias, derrotas y empates, y luego elige el movimiento con el mejor resultado garantizado. En un tablero pequeño, esto hace que la computadora sea invencible.

Sí. Los agentes de aprendizaje por refuerzo, como Q-learning, mejoran jugando miles de partidas y recompensando los movimientos ganadores. Los tableros se almacenan como matrices con NumPypermitiendo que el modelo aprenda una estrategia casi óptima sin reglas predefinidas.

Sí. GitHub Copilot y asistentes de IA similares pueden generar el tablero, el bucle de turnos y las comprobaciones de victoria a partir de una breve instrucción. Considera el resultado como un primer borrador y luego prueba tú mismo los casos excepcionales, como los empates y los movimientos inválidos.

Resumir este post con: