コード例を使用して Python で三目並べゲームを作成する方法

Python の Tic Tac Toe Game は、ぜひ試してみたい興味深いプロジェクトです。 これは課題を解決するクールで楽しいプロジェクトであり、Python の基本概念をマスターするのに役立ちます。 楽しい三目並べゲームを作成すると、スキルを伸ばすことができます。

Pycharm などの優れた Python エディターやコマンド ライン インターフェイスを使用できます。

チックトックゲームの遊び方は?

三目並べゲームは、ゲームボードを必要とせずに誰でもプレイできるシンプルな XNUMX 人用ゲームです。 XNUMX 人のプレーヤーが、勝利または引き分けでゲームが終了するまで、異なるセルにマークを付ける必要があります。

三目並べゲームの遊び方はこちらです。

ステップ1) 三目並べゲームは、正方形のグリッド内の空のセルから始まります。 こちらは三目並べボードです。

ステップ2) 両プレイヤーは XNUMX つのシンボル (通常は X または O) から選択します。 ゲーム内では他の任意の固有のシンボルを使用できます。

ステップ3) 現在のプレイヤーは、勝利の組み合わせを埋めるまで、三目並べボードのセルを埋めて順番にマークを付けます。 これは、同じ符号を持つ行、列、または対角線全体です。

ステップ4) すべてのセルが埋まっていて明らかな勝者がいない場合、ゲームが引き分けになる可能性もあります

要件

の構築 三目並べ Python プロジェクト Python プログラミング言語の初心者レベルの理解が必要です。 これには、「for」ループと反復、および Python で使用される if ステートメントについての理解が含まれます。

三目並べ Python プロジェクトを完了するには、Python と Python テキスト エディターがコンピューターにインストールされている必要もあります。 これは Python による初心者レベルの三目並べゲームなので、Python ライブラリは必要ありません。

コード内のバグの解決策を見つけるには、ある程度のデバッグ スキルが必要な場合があります。また、ゲーム コンポーネントについても十分に理解している必要があります。

三目並べの Python アルゴリズム

Python プログラミング言語で三目並べゲームを作成するには、次の手順に従います。

ステップ1) ボードを作成して三目並べゲームを始めます。

ステップ2) ゲームボードの寸法を決定するようユーザーに依頼します。

ステップ3) 最初のプレイヤーをランダムに選択します。

ステップ4) 三目並べゲームが始まります。

ステップ5) プレイヤーはボード上の空いている場所を選択してプレイします。

ステップ6) 選択した空のスポットをプレーヤーのサインで埋めます。

ステップ7) ゲーム ロジックを使用して、プレーヤーがゲームで勝つか引き分けになるかを判断します。

ステップ8) プレイヤーが勝てない場合、または XNUMX 番目のプレイヤーと引き分けになった場合は、毎回のプレイ後にゲーム ボードを表示します。

ステップ9) それぞれ引き分けまたは勝利のメッセージを表示します。

ステップ10) 新しいゲームを開始するオプションを使用して三目並べゲームを終了します。

三目並べの完全な Python コード

# Guru99
# Code developed by Guru99.com
# Guru99 tic-tac-toe game
#Get input
def getInput(prompt, cast=None, condition=None, errorMessage=None):
  while True:
      try:
          val = cast(input(prompt))
          assert condition is None or condition(val)
          return val
      except:
          print(errorMessage or "Invalid input.")
# Print the game board
def printBoard(board):
  print()
  for row in board:
      print(*row)
  print()
# Check if player won using the winning combinations
def checkWin(board):
  # Check rows
  for row in range(len(board)):
      for col in range(len(board)-1):
          if board[row][col] == "_" or board[row][col+1] == "_" or board[row][col] != board[row][col+1]:
              break
      else:
          return True
  # Check column numbers
  for col in range(len(board)):
      for row in range(len(board)-1):
          if board[row][col] == "_" or board[row+1][col] == "_" or board[row][col] != board[row+1][col]:
              break
      else:
          return True
  # Check left diagonal
  for cell in range(len(board)-1):
      if board[cell][cell] == "_" or board[cell+1][cell+1] == "_" or board[cell][cell] != board[cell+1][cell+1]:
          break
  else:
      return True
  # Check right diagonal
  for cell in range(len(board)-1):
      emptyCell = board[cell][len(board)-cell-1] == "_" or board[cell+1][len(board)-cell-2] == "_"
      different = board[cell][len(board)-cell-1] != board[cell+1][len(board)-cell-2]
      if emptyCell or different:
          break
  else:
      return True
  # No win
  return False
# Play tic tac toe game
def play():
  # Introduction
  print("------------\nN-DIMENSIONAL TIC TAC TOE game by guru 99.com \n------------")
  # Set up variables
  N = getInput(prompt="Guru99 says>>> Enter N, the dimensions of the board: ",
               cast=int,
               condition=lambda x: x >= 3,
               errorMessage="Invalid input. Please enter an integer greater than or equal to 3 as explained on guru99.com")
  board = [['_'] * N for _ in range(N)]
  used = 0
  turn = 0
  # Play guru99 tic tac toe game in Python using while infinite loop
  while True:
      # Print guru99 tic tac toe game board
      printBoard(board)
      # Get user pick
      pick = getInput(prompt=f"Player {turn+1} - Pick location (row, col): ",
                      cast=lambda line: tuple(map(int, line.split(" "))),
                      condition=lambda pair: min(pair) >= 0 and max(pair) < N and board[pair[0]][pair[1]] == "_",
                      errorMessage="Invalid input. Please enter a valid, unoccupied location as an integer pair.")
      # Populate location
      board[pick[0]][pick[1]] = "X" if turn == 0 else "O"
      used += 1
      # Check for win
      #Guru99 tutorial
      if checkWin(board):
          printBoard(board)
          print(f"Game over, Player {turn+1} wins.")
          break
      # Check for tie
      elif used == N*N:
          printBoard(board)
          print("Game over. Players have tied the match.")
          print("Guru99.com tic tac toe game ")
          break
      # If no win yet, update next user
      turn = (turn+1)%2
  # Check for rematch
  playAgain = getInput(prompt="Play Guru99 tic tac toe_Game again? (y/n): ",
                       cast=str,
                       condition=lambda ans: ans.strip("\n").lower() in {"y", "n"},
                       errorMessage="Invalid input. Please enter 'y' or 'n'.")
  if playAgain == 'n':
      # End the game
      print("\nGuru99 TicTacToe game ended.")
      return
  else:
      # Rematch
      play()
# Main
if __name__ == '__main__':
  play()

三目並べの Python コード出力

上記のソース コードを実行すると、3 X 3 三目並べボードで予想される出力は次のようになります。

------------
N-DIMENSIONAL TIC TAC TOE game by guru 99.com
------------
Guru99 says>>> Enter N, the dimensions of the board: 3

_ _ _

_ _ _

_ _ _

Player 1 - Pick location (row, col): 1 1

_ _ _

_ X _

_ _ _

Player 2 - Pick location (row, col): 0 1

_ O _

_ X _

_ _ _

Player 1 - Pick location (row, col): 1 2

_ O _

_ X X

_ _ _

Player 2 - Pick location (row, col): 0 2

_ O O

_ X X

_ _ _

Player 1 - Pick location (row, col): 1 0

_ O O

X X X

_ _ _

Game over, Player 1 wins.
Play Guru99 tic tac toe_Game again? (y/n):

完全なコードの内訳

作成 Python での三目並べは簡単です。 各行で何が起こっているのかを理解するために、さまざまな関数を細かく分析してみましょう。

基板の印刷

三目並べボードがゲームのメインディスプレイです。 では、ゲーム ボードを表示するために Python 表示ウィンドウが使用されます。

Python で三目並べのボードを作成するのに役立つ手順は次のとおりです。

三目並べの Python コード

def getInput(prompt, cast=None, condition=None, errorMessage=None):
   while True:
       try:
           val = cast(input(prompt))
           assert condition is None or condition(val)
           return val
       except:
           print(errorMessage or "Invalid input.")
# Print the board
def printBoard(board):
   print()
   for row in board:
       print(*row)
   print()
N = getInput(prompt="Guru99 says>>> Enter N, the dimensions of the board: ",
            cast=int,
            condition=lambda x: x >= 3,
            errorMessage="Invalid input. Please enter an integer greater than or equal to 3 as explained on guru99.com")
board = [['_'] * N for _ in range(N)]
used = 0
turn = 0
printBoard(board)

コード出力:

------------
N-DIMENSIONAL TIC TAC TOE game by guru 99.com
------------
Guru99 says>>> Enter N, the dimensions of the board: 3

_ _ _

_ _ _

_ _ _

三目並べゲーム – 勝利のアレンジメント

プレイヤーが勝ったかどうかを確認するには、行、列、対角線全体で勝利の組み合わせを確認する必要があります。 勝者がいる場合は、勝者のメッセージを表示する必要があります。

  • 行については、関数は連続する列のペアをすべて取得し、勝利の組み合わせをチェックします。
  • 最初に列を埋めたプレイヤーが勝ちです。 したがって、XNUMX番目のプレーヤーは負けます。
  • 連続する XNUMX つの列が同じである場合、その行内のすべての要素が同じであることは明らかです。
  • それらの XNUMX つが異なる場合、または行に空のセルが含まれている場合でも、勝者はいません。
  • 次に、負け条件を実装し、ブレークを追加します。 これらの負け条件のいずれかが当てはまる場合、チェックされた行には勝者がいませんでした。
  • else ステートメントは、勝者が存在することを示す true を返します。
  • ブレークはこのループから抜け出し、次の行に進みます。

コラム

列についても、行と同じ機能を繰り返します。 各プレイヤーが順位を選択した後、プレイヤーが勝ったかどうかを確認します。

斜めの列が勝ち

左斜めの場合、タスクはより簡単になります。 常に対角線のセルを比較します。 ただし、勝者がいない場合は、次の指示に進むことができます。

ゲームロジックをプレイする

これがゲームの主な機能です。 このために、情報を保存する変数を使用できます。

  • 最初の変数は「N」に格納される基板サイズです。 ゲームは、ユーザーに数値の入力を求めた後、ボードのサイズを取得します。
  • したがって、値を入力すると処理されます。
  • また、無効な数値が入力されたときにプレーヤーに表示するエラー メッセージも作成します。
  • 次に、セルが入力されたときに「X」または「O」を入力する XNUMX つの変数を作成できます。
  • 次に、プレイヤーにゲームボードを見せます。 この後、プレイヤーからの意見を受け取ります。
  • 次に、ロジックは選択したセルを塗りつぶしとしてマークし、勝ちか引き分けかをチェックします。
  • 勝者がいない場合、ゲームは次のプレイヤーにプレイを求めます。 勝ちまたは引き分けの場合、ゲームはユーザーに新しいゲームが必要かどうかを尋ねることができます。

要約

  • 三目並べは、空のボード セルにユニークなシンボルを配置してプレイする楽しい XNUMX 人用ゲームです。
  • Python で三目並べゲームを作成するには、Python、テキスト エディター、および Python のインストールについての初心者レベルの理解が必要です。
  • このアルゴリズムは、あらゆる言語で体系的にコードを記述するのに役立ちます。
  • ゲームを作成するには、まずボードを描画し、勝ち負けの配置を決定するコードを記述します。
  • 最初に Python の三目並べコードを再生してテストできます。