Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

난수를 이용한 자동 Tic Tac Toe 게임의 Python 구현

<시간/>

이것은 매우 재미있는 게임입니다. 이 게임에서는 플레이어가 필요하지 않으며 자동 게임입니다.

여기서 우리는 두 개의 Python 모듈 numpy 및 random을 사용하고 있습니다. 이 게임에서는 사용자에게 보드에 표시를 하라고 요청하는 대신 자동으로 보드에 표시를 하고 플레이어가 이기지 않는 한 매 턴 후에 보드를 표시합니다. 게임이 무승부이면 -1을 반환합니다.

예시 코드

import numpy as np
import random
from time import sleep
#  first creates an empty board
def my_create_board():
   return(np.array([[0, 0, 0], [0, 0, 0], [0, 0, 0]]))
# Check for empty places on board
def my_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 my_random_place(board, my_player):
   selection = my_possibilities(board)
   current_loc = random.choice(selection)
   board[current_loc] = my_player
   return(board)
def my_row_win(board, my_player):
   for x in range(len(board)):
      win = True
      for y in range(len(board)):
         if board[x, y] != my_player:
            win = False
            continue
         if win == True:
            return(win)
      return(win)
def my_col_win(board, my_player):
   for x in range(len(board)):
      win = True
      for y in range(len(board)):
         if board[y][x] != my_player:
            win = False
            continue
      if win == True:
         return(win)
   return(win)
def my_diag_win(board, my_player):
   win = True:
   for x in range(len(board)):
      if board[x, x] != my_player:
         win = False
   return(win)
def evaluate_game(board):
   my_winner = 0
   for my_player in [1, 2]:
      if (my_row_win(board, my_player) or
         my_col_win(board,my_player) or
         my_diag_win(board,my_player)):
         my_winner = my_player
   if np.all(board != 0) and my_winner == 0:
      my_winner = -1
   return my_winner
# Main function to start the game
def my_play_game():
   board, my_winner, counter = my_create_board(), 0, 1
   print(board)
   sleep(2)
   while my_winner == 0:
      for my_player in [1, 2]:
         board = my_random_place(board, my_player)
         print("Board after " + str(counter) + " move")
         print(board)
         sleep(2)
         counter += 1
         my_winner = evaluate_game(board)
         if my_winner != 0:
            break
   return(my_winner)
# Driver Code
print("Winner is: " + str(my_play_game()))

출력

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