English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

랜덤 수를 사용한 자동 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
# 메인 함수로 게임 시작
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("보드 이후 " + str(counter) + " 이동")
         print(board)
         sleep(2)
         counter += 1
         my_winner = evaluate_game(board)
         if my_winner != 0:
            break
   return(my_winner)
# 드라이버 코드
print("승자는: " + str(my_play_game())

출력 결과

[[0 0 0]
 [0 0 0]
 [0 0 0]]
보드 이후 1 이동
[[0 1 0]
 [0 0 0]
 [0 0 0]]
보드 이후 2 이동
[[0 1 0]
 [0 0 0]
 [0 0 2]]
보드 이후 3 이동
[[0 1 0]
 [0 0 0]
 [0 1 2]]
보드 이후 4 이동
[[0 1 0]
 [0 0 2]
 [0 1 2]]
보드 이후 5 이동
[[0 1 1]
 [0 0 2]
 [0 1 2]]
보드 이후 6 이동
[[0 1 1]
 [2 0 2]
 [0 1 2]]
보드 이후 7 이동
[[0 1 1]
 [2 1 2]
 [0 1 2]]
승자는: 1
Elasticsearch 가이드