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.
numpy
y random
las 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