- import random
- gameBoard = [0,1,2,3,4,5,6,7,8] # ゲームに利用する盤面
- # 盤面を3x3で表示する
- def displayBoard():
- # gameBoardの要素を1つずつ表示
- print("--+---+--") # デコレーション
- for i in range(0, len(gameBoard)):
- if(i%3 == 2): # 3回に1回は改行
- print(gameBoard[i]) # 改行する
- print("--+---+--") # デコレーション
- elif(i%3 == 1):
- print(" | " + str(gameBoard[i]) + " | ", end="") # 改行しない
- else :
- print(gameBoard[i], end="") # 改行しない
- print()
- # ターンを進める
- def inputBoard(playerType):
- # 1.座標を入力させる
- if(playerType == "★"): # o が渡されたら座標を入力
- tgt = int(input("0~8の座標を入れてください: "))
- else: # xが渡されたらランダムで座標を入力
- tgt = random.randint(0,8)
- # 2.入力座標に 'o'か 'x' が入っていないことを確認
- if(gameBoard[tgt] == '★' or gameBoard[tgt] == '◆'):
- inputBoard(playerType)
- # 3.gameBoardに反映
- else:
- gameBoard[tgt] = playerType
- # 勝利判定
- def winner():
- # 勝ち手を列挙
- lines = [
- [0, 1, 2],
- [3, 4, 5],
- [6, 7, 8],
- [0, 3, 6],
- [1, 4, 7],
- [2, 5, 8],
- [0, 4, 8],
- [2, 4, 6],
- ]
- # forで勝ち手を1パターンずつ見ていく
- for i in range(0, len(lines)):
- [a, b, c] = lines[i]
- # 勝ち手の場所に同じ記号が入っていないかを確認
- if gameBoard[a] and gameBoard[a] == gameBoard[b] and gameBoard[a] == gameBoard[c]:
- # 同じ記号が入っていたら、入っている記号を返す
- return gameBoard[a]
- # どちらも勝っていない場合はNoneを返す
- return None
- displayBoard() # 実行時に初めに表示される盤面
- # ゲームを実行する
- for turn in range(0,9):
- # 誰のターンかを判定する
- if(turn %2 == 0) : # あなたのターン
- print("You")
- inputBoard("★")
- else: # CPUのターン
- print("CPU")
- inputBoard("◆")
- displayBoard() # 盤面表示
- if winner(): # 勝敗判定
- print(winner()+"の勝ち!おめでと!")
- break
- if turn == 8: # 8手目で引き分け
- print("引き分け〜!もっかいやってく?")
- break