Implementación de Python del juego automático Tic Tac Toe usando un número aleatorio

Tic-tac-toe es un juego muy popular, así que implementemos un juego automático de Tic-tac-toe usando Python.

El programa ejecuta automáticamente el juego y, por lo tanto, no se necesita ninguna intervención del usuario. Aún así, desarrollar un juego automático será muy divertido. Veamos cómo hacer esto.

numpyy randomlas bibliotecas de Python se utilizan para construir este juego. En lugar de pedirle al usuario que ponga una marca en el tablero, el código elige aleatoriamente un lugar en el tablero y coloca la marca. Mostrará el tablero después de cada turno a menos que un jugador gane. Si el juego obtiene empate, entonces devuelve -1.

Explicación:
play_game() es la función principal, que realiza las siguientes tareas:

  • Llama a create_board() para crear un tablero de 9×9 y se inicializa con 0.
  • Para cada jugador (1 o 2), llama a la función random_place() para elegir aleatoriamente una ubicación a bordo y marcar esa ubicación con el número de jugador, alternativamente.
  • Imprime el tablero después de cada movimiento.
  • Evalúe el tablero después de cada movimiento para comprobar si una fila, una columna o una diagonal tienen el mismo número de jugador. Si es así, muestra el nombre del ganador. Si después de 9 movimientos no hay ganador, se muestra -1.

A continuación se muestra el código para el juego anterior:

# Tic-Tac-Toe Program using
# random number in Python
  
# importing all necessary libraries
import numpy as np
import random
from time import sleep
  
# Creates an empty board
def create_board():
    return(np.array([[0, 0, 0],
                     [0, 0, 0],
                     [0, 0, 0]]))
  
# Check for empty places on board
def possibilities(board):
    l = []
      
    for i in range(len(board)):
        for j in range(len(board)):
              
            if board[i][j] == 0:
                l.append((i, j))
    return(l)
  
# Select a random place for the player
def random_place(board, player):
    selection = possibilities(board)
    current_loc = random.choice(selection)
    board[current_loc] = player
    return(board)
  
# Checks whether the player has three 
# of their marks in a horizontal row
def row_win(board, player):
    for x in range(len(board)):
        win = True
          
        for y in range(len(board)):
            if board[x, y] != player:
                win = False
                continue
                  
        if win == True:
            return(win)
    return(win)
  
# Checks whether the player has three
# of their marks in a vertical row
def col_win(board, player):
    for x in range(len(board)):
        win = True
          
        for y in range(len(board)):
            if board[y][x] != player:
                win = False
                continue
                  
        if win == True:
            return(win)
    return(win)
  
# Checks whether the player has three
# of their marks in a diagonal row
def diag_win(board, player):
    win = True
    y = 0
    for x in range(len(board)):
        if board[x, x] != player:
            win = False
    if win:
        return win
    win = True
    if win:
        for x in range(len(board)):
            y = len(board) - 1 - x
            if board[x, y] != player:
                win = False
    return win
  
# Evaluates whether there is
# a winner or a tie 
def evaluate(board):
    winner = 0
      
    for player in [1, 2]:
        if (row_win(board, player) or
            col_win(board,player) or 
            diag_win(board,player)):
                 
            winner = player
              
    if np.all(board != 0) and winner == 0:
        winner = -1
    return winner
  
# Main function to start the game
def play_game():
    board, winner, counter = create_board(), 0, 1
    print(board)
    sleep(2)
      
    while winner == 0:
        for player in [1, 2]:
            board = random_place(board, player)
            print("Board after " + str(counter) + " move")
            print(board)
            sleep(2)
            counter += 1
            winner = evaluate(board)
            if winner != 0:
                break
    return(winner)
  
# Driver Code
print("Winner is: " + str(play_game()))

Producción :

[[0 0 0]
 [0 0 0]
 [0 0 0]]
Board after 1 move
[[0 0 0]
 [0 0 0]
 [1 0 0]]
Board after 2 move
[[0 0 0]
 [0 2 0]
 [1 0 0]]
Board after 3 move
[[0 1 0]
 [0 2 0]
 [1 0 0]]
Board after 4 move
[[0 1 0]
 [2 2 0]
 [1 0 0]]
Board after 5 move
[[1 1 0]
 [2 2 0]
 [1 0 0]]
Board after 6 move
[[1 1 0]
 [2 2 0]
 [1 2 0]]
Board after 7 move
[[1 1 0]
 [2 2 0]
 [1 2 1]]
Board after 8 move
[[1 1 0]
 [2 2 2]
 [1 2 1]]
Winner is: 2

Publicación traducida automáticamente

Artículo escrito por RichaKumari1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *