井字遊戲又叫做 Tic-Tac-Toe,雙方在井字棋盤上交互畫圈(◯)和打叉(✕),先以橫向、直向或斜向連成一線的為勝方,井字遊戲規則簡單易懂又節奏明快,只要有紙筆就能開始競賽,是相當受歡迎的小品遊戲。
詳細的遊戲策略與技巧,可參閱 youtube 教學影片「(211) 【小數界大學問】5-1 穩操勝算 - YouTube」的開頭到06:16這段講解。
我們先用一段文字介面程式來講解其邏輯。先寫一個雙人版,利用數字鍵代表井字棋盤的相對位置。
我們先用一段文字介面程式來講解其邏輯。先寫一個雙人版,利用數字鍵代表井字棋盤的相對位置。
# 文字版井字遊戲
# 初始化棋盤
board = [" " for _ in range(9)]
# 定義玩家 X
current_player = "X"
# 印棋盤
def print_board():
print(board[0] + "|" + board[1] + "|" + board[2])
print("-+-+-")
print(board[3] + "|" + board[4] + "|" + board[5])
print("-+-+-")
print(board[6] + "|" + board[7] + "|" + board[8])
# 檢查是否有玩家獲勝
def check_winner(player):
for i in range(0, 9, 3):
if board[i] == board[i + 1] == board[i + 2] == player:
return True
for i in range(3):
if board[i] == board[i + 3] == board[i + 6] == player:
return True
if board[0] == board[4] == board[8] == player:
return True
if board[2] == board[4] == board[6] == player:
return True
return False
# 主程式
while True:
# 印棋盤
print_board()
# 取得當前玩家輸入位置
move = int(input("玩家 " + current_player + " 請下棋 (1-9): ")) - 1
# 檢查位置是否合法
if 0 <= move < 9 and board[move] == " ":
board[move] = current_player
# 檢查是否有玩家獲勝
if check_winner(current_player):
print_board()
print("玩家 " + current_player + " 獲勝!")
break
# 切換玩家
current_player = "X" if current_player == "O" else "O"
else:
print("無效的棋步,請重下。")
print("遊戲結束。")