###### tags: `APCS` # **Tic-Tac-Toe** ### **題目解析** 井字遊戲是一個兩人對弈的遊戲,每位玩家輪流在3x3的棋盤上標記一個格子,第一位完成水平、垂直或對角線連成一線的玩家獲勝。本題要求判斷每場遊戲的勝者,並輸出"Player1 win"或"Player2 win"。若無人獲勝則輸出"draw"。 ### **解題方向** 1. 輸入資料:首先讀取一個整數N,表示要判斷的遊戲數量。接下來對於每一場遊戲,讀取3行輸入,每行有3個整數(0或1),代表井字遊戲的棋盤狀態。 1. 檢查勝利條件:對於每個遊戲的棋盤,檢查以下勝利條件: * 水平三連線:檢查每一行的3個格子是否相同。 * 垂直三連線:檢查每一列的3個格子是否相同。 * 對角線三連線:檢查兩條對角線的3個格子是否相同。 1. 輸出結果: * 如果任何一位玩家滿足三連線條件,則輸出該玩家獲勝。 * 如果沒有玩家獲勝,則輸出"draw"。 ### **完整程式碼** ```python= while True: try: # 讀取遊戲的數量 N = int(input()) # 對於每一場遊戲 for idx in range(N): arr = [] # 讀取3x3的棋盤 for i in range(3): row = list(map(int, input().split())) arr.append(row) isWin = False # 檢查水平三連線 for i in range(3): if arr[i][0] == arr[i][1] == arr[i][2]: # 簡化三連線檢查 if arr[i][0] == 0: isWin = True print("Player1 win") elif arr[i][0] == 1: isWin = True print("Player2 win") # 檢查垂直三連線 for j in range(3): if arr[0][j] == arr[1][j] == arr[2][j]: # 簡化三連線檢查 if arr[0][j] == 0: isWin = True print("Player1 win") elif arr[0][j] == 1: isWin = True print("Player2 win") # 檢查對角線三連線(左上到右下) if arr[0][0] == arr[1][1] == arr[2][2]: # 簡化三連線檢查 if arr[0][0] == 0: isWin = True print("Player1 win") elif arr[0][0] == 1: isWin = True print("Player2 win") # 檢查對角線三連線(右上到左下) if arr[0][2] == arr[1][1] == arr[2][0]: # 簡化三連線檢查 if arr[0][2] == 0: isWin = True print("Player1 win") elif arr[0][2] == 1: isWin = True print("Player2 win") # 若無人獲勝,則判斷為平局 if not isWin: print("draw") except: break ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up