Python
 Computer >> コンピューター >  >> プログラミング >> Python

乱数を使用した自動TicTacToeゲームのPython実装


これはとても面白いゲームです。このゲームではプレイヤーは必要ありません。自動ゲームです。

ここでは、numpyとrandomの2つのPythonモジュールを使用しています。このゲームでは、ユーザーにボードにマークを付けるのではなく、ボードにマークを自動的に付けます。プレーヤーが勝てない限り、各ターンの後にボードが表示されます。ゲームが引き分けになると-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

  1. Pythonを使用したコンウェイのライフゲーム?

    1970年頃の英国の数学者は、彼の「ライフゲーム」を作成しました。これは基本的に、生物のコロニーの混沌とし​​た、しかしパターン化された成長を描いた一連のルールです。 「GameofLife」は、「生きている」細胞と「死んでいる」細胞で構成される2次元グリッドです。 人生ゲームのルール 人口過多 :細胞が3つ以上の生きている細胞に囲まれている場合、細胞は死にます(オフ)。 静的 :細胞が2つまたは3つの生きている細胞に囲まれている場合、その細胞は生きています。 過少人口 :細胞が2つ未満の生きている細胞に囲まれている場合、細胞は死にます(オフになります)。 複製 :死ん

  2. PythonでTkinterを使用したカラーゲーム

    GUIアプリケーションの開発では、tkinterは非常に人気があり簡単です。 tkinterを使用すると、GUIゲームを簡単に開発できます。 ここでもカラーゲームの開発を試みています。このゲームでは、プレーヤーは画面に表示される単語の色を入力する必要があるため、スコアが1つ増えます。このゲームをプレイする合計時間は、30秒で、このゲームで使用される色は、赤、青、緑、ピンク、ブラック、イエロー、オレンジ、ホワイト、パープル、ブラウン。インターフェイスには、さまざまな色の名前がさまざまな色で表示されます。ゲームに勝つには、ユーザーは色を識別し、正しい色の名前を入力する必要があります。 サンプルコ