三目並べゲームの作り方 Python コード例付き

三目並べゲームで Python は、あなたが試すことができる興味深いプロジェクトです。これは、課題を解決するクールで楽しいプロジェクトであり、基本的な概念を習得するのに役立ちます。 Python楽しい三目並べゲームを作成すると、スキルが向上します。

良い Python Pycharm などのエディタまたはコマンドライン インターフェイス。

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

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

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

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

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

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

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

要件

の構築 ○×ゲーム Python プロジェクト 初心者レベルの理解が必要です Python プログラミング言語。「for」ループと反復、if文がどのように使用されるかを理解することが含まれます。 Python.

あなたも持っている必要があります Python フォルダーとその下に Python 三目並べを完成させるためにコンピュータにテキストエディタをインストールします Python プロジェクト。これは初心者レベルの三目並べゲームなので、 Python、何も必要ありません Python としょうかん。

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

Tic Tac Toeの 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()

Tic Tac Toeの 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 まずはプレイしてみましょう。