Pythonはtic-tac-toeゲームを実装しています

この記事では、tic-tac-toeゲームのpython実装をすべての人に共有しています。参考までに、具体的な内容は次のとおりです。

金曜日の夜にパイソンの選択科目を受講しました。先生はパイソンの基本的な文法から始めたと思いましたが、タートルドローイングから始まるとは思っていませんでした。少し。

以前、図書館からパイソンゲームプログラミングの本を借りていましたが、最初の数章を読んだ後はあまり読みませんでした。突然夜に読みたくなり、チュートリアルに従ってゲームを書きました。ついにTic-Tac-Toeが誕生しましたが、実際、コードはそれほど長くはありませんが、主にアイデアであり、十分に検討する必要があります。コードを書いた後、長い間コンピューターでtic-tac-toeをプレイしましたが、ラウンドに勝てませんでした。本当に無力で、比較できませんでした。

開発環境:windows10 + pycharm(チェスをプレイするときに入力が必要なため、sublimeは入力方法を知らないため、pycharmが使用されます)

使用する必要があるパッケージは1つだけです:ランダム

ゲームの場合、最初に理解することは、ゲームの流れ、最初に何をすべきか、次に何をすべきかです。 Tic-tac-toeは比較的複雑なゲームではないので、プロセスについては説明しません。最初に行うのは、チェス盤、コンピューター、プレーヤーのピースを描画し、ピースを最初に配置するなどです。以下はコードで説明されています。

# チェスボードを描画し、チェスピースのリストを渡す機能
def drawBoard(board):print(" "+ board[7]+" | "+ board[8]+" | "+ board[9])print("------------")print(" "+ board[4]+" | "+ board[5]+" | "+ board[6])print("------------")print(" "+ board[1]+" | "+ board[2]+" | "+ board[3])
 
# プレイヤーは使用したいチェスピースのタイプを選択します
def inputPlayerLetter():
 
 letter =''whilenot(letter =='X' or letter =='O'):print("Do you want to be X or O")
 # 小文字を大文字に自動的に変換
 letter =input().upper()
 
 # プレーヤーがXを選択すると、Oが自動的にコンピューターに割り当てられ、その逆も同様です。
 if letter =='X':return['X','O']else:return['O','X']
 
# ここでは、0または1がランダムに生成され、誰が最初に解決するかを示します。
def whoGoesFirst():if random.randint(0,1)==0:return'computer'else:return'player'
 
# プレイヤーがyまたはYを選択すると、ゲームが再開します
def playAgain():print("Do you want to play again?(yes or no)")returninput().lower().startswith('y')
 
# チェスピースをボードに置きます
# ボードパラメータは、保存されているチェスピースのリストです。
# 文字パラメータは、チェスピースのタイプです。
# 移動は、チェスピースを配置する場所を選択することです
def makeMove(board, letter, move):
 
 board[move]= letter
 
# Tic TacToeのルールに従って勝つかどうかを決定します
def isWinner(bo, le):return((bo[7]== le and bo[8]== le and bo[9]== le)or(bo[4]== le and bo[5]== le and bo[6]== le)or(bo[1]== le and bo[2]== le and bo[3]== le)or(bo[7]== le and bo[4]== le and bo[1]== le)or(bo[8]== le and bo[5]== le and bo[2]== le)or(bo[9]== le and bo[6]== le and bo[3]== le)or(bo[7]== le and bo[5]== le and bo[3]== le)or(bo[9]== le and bo[5]== le and bo[1]== le))
 
# すでにボード上にあるピースをバックアップします,いつでも更新
def getBoardCopy(board):
 
 dupeBoard =[]for i in board :
 dupeBoard.append(i)return dupeBoard
 
# チェス盤を置く場所があるかどうかを判断します
def isSpaceFree(board, move):return board[move]==' '
 
# プレーヤーの位置を取得する
def getPlayerMove(board):
 
 move =' '
 # 移動の位置が正しいかどうか、およびボードをまだ配置できるかどうかを判断します
 while move not in'1 2 3 4 5 6 7 8 9'.split() or not isSpaceFree(board,int(move)):print("What is your next move?(1-9)")
 move =input()returnint(move)
 
# 主にコンピューター用に降車できる場所を探す
def chooseRandomMoveFromList(board, moveList):
 
 possibleMoves =[]for i in moveList :ifisSpaceFree(board, i):
 possibleMoves.append(i)iflen(possibleMoves)!=0:return random.choice(possibleMoves)else:return None

上記のコードは、いくつかの簡単な機能を実装してから、コンピューターの一部を実装します。結局のところ、コンピューターなので、見た目が悪くないので、以下は小さなAIに相当します。コンピューターはバックアップコピーで判断できます。結果は、ドロップの位置を指定することです。

# コンピューターの配置
def getComputerMove(board, computerLetter):
# ボード上のコンピューターとプレーヤーのピースのタイプを指定します
if computerLetter =='X':
playerLetter ='O'else:
playerLetter ='X'for i inrange(1,10):
# バックアップボードにピースを配置する場所があるかどうかを判断します
copy =getBoardCopy(board)ifisSpaceFree(copy, i):
# 落ち着く場所があれば,まず、バックアップボードにピースを置きます
makeMove(copy, computerLetter, i)
# コンピュータがポジションの後に勝つことができるかどうかを判断します,そして、勝ちポジションのポジションに戻ります
ifisWinner(copy, computerLetter):return i
for i inrange(1,10):
copy =getBoardCopy(board)ifisSpaceFree(copy, i):
# バックアップボード上でプレーヤーの動きをシミュレートする
makeMove(copy, playerLetter, i)
# 次回プレイヤーが移動した場合、彼らは勝つことができます,プレイヤーの場所の位置を返します,プレーヤーをブロックするために使用されます
ifisWinner(copy, playerLetter):return i
# 四隅にランダムに配置
move =chooseRandomMoveFromList(board,[1,3,7,9])if move != None :return move
# コーナーがいっぱいの場合,次に、ドロップは中央の位置にあります5。
ifisSpaceFree(board,5):return5
# コーナーと中央が占有されている場合,ランダム選択
returnchooseRandomMoveFromList(board,[2,4,6,8])
# ボードがいっぱいかどうかを確認します
def isBoardFull(board):for i inrange(1,10):ifisSpaceFree(board, i):return False
return True
print("Welcome to Tictactoe !!!")while True :
# ボードを初期化して空にします
theBoard =[' ']*10
# プレーヤーとコンピューターのチェスタイプの選択
playerLetter, computerLetter =inputPlayerLetter()
# 優先順位の決定
turn =whoGoesFirst()print('The '+ turn +' will go first')
# ゲーム開始フラグ,ゲームが終了するとFalseになります
gameIsPlaying = True
while gameIsPlaying :
# プレイヤーファースト
if turn =='player':drawBoard(theBoard)
# プレーヤーのチェスの位置を取得します
move =getPlayerMove(theBoard)
# プレーヤーの駒をリスト内の対応する位置に渡します
makeMove(theBoard, playerLetter, move)
# プレイヤーが勝った場合,フラグがFalseになります
ifisWinner(theBoard, playerLetter):drawBoard(theBoard)print("You win !")
gameIsPlaying = False
# それ以外の場合は、ボードがいっぱいかどうかを判断します
else:ifisBoardFull(theBoard):drawBoard(theBoard)print("Tie")break
# ボードがいっぱいでない場合,そして、プレイヤーは落ち着きました,その後、それは次回コンピュータに落ちます
else:
turn ='computer'
# コンピューターファースト
else:
# コンピューターがランダムに場所を選択します
move =getComputerMove(theBoard, computerLetter)makeMove(theBoard, computerLetter, move)
# コンピューターが勝った場合,ゲームは終りだ
ifisWinner(theBoard, computerLetter):drawBoard(theBoard)print("You lose !")
gameIsPlaying = False
else:ifisBoardFull(theBoard):drawBoard(theBoard)print("Tie")breakelse:
turn ='player'
# プレイヤーはゲームを再開しませんでした,ループ外
if not playAgain():break

上記のコードはすべて、統合後にプレイできるTic-Tac-Toeのヒューマンマシンバトルを実現しています。とにかく、私は勝ったことがありません。

以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。

Recommended Posts

Pythonはtic-tac-toeゲームを実装しています
Pythonはtic-tac-toeゲームを実装しています
Pythonは単純なtic-tac-toeゲームを実装しています
PythonはTetrisゲームを実装しています
Pythonはminesweeperゲームを実装しています
Pythonは推測ゲームを実装しています
Pythonは推測ゲームを実装しています
Pythonはデジタル爆弾ゲームを実装しています
Pythonは実店舗のゲームを実装しています
Pythonは単にスネークゲームを実装します
Pythonはデジタル爆弾ゲームプログラムを実装しています
Pythonはスーパーマリオを実装しています
Pythonはマンマシンゴバンを実装します
Python、PyGameゲームプロジェクト
Pythonは画像スティッチングを実装しています
Pythonはスネークゲームのソースコードを実装しています
Pythonはスキャンツールを実装しています
Pythonはしきい値回帰を実装します
Pythonは地雷除去ゲームを実装しています
Pythonは電子辞書を実装しています
Pythonは単純なタンクバトルを実装します
Python3は飛行機戦争ゲームを実現します
Pythonはudpチャットウィンドウを実装します
pythonはゲームという言葉を推測します
Pythonは駐車場管理システムを実現
Pythonはリンゴを食べるゲームを実現します
PythonはTCPファイル転送を実装します
Pythonは推測ゲームを実現します
Pythonnumpyはローリングケースを実装します
OpenCVPythonはパズルゲームを実装しています
Pythonはパスワード強度検証を実装します
Pythonは車の管理システムを実装しています
Pythonはコードブロックフォールディングを実装します
Pythonはパノラマ画像スティッチングを実装しています
PythonはSMTPメール送信を実装します
Pythonは多次元配列ソートを実装しています
PythonがFTP機能を実装する方法
Pythonは平均シフトクラスタリングアルゴリズムを実装しています
Pythonは検証コード認識を実装します
Pythonは勾配降下法を実装しています
Pythonはテキストバージョンのminesweeperを実装しています
Pythonは画像スティッチング機能を実装しています
Pythonは学生のパフォーマンス評価システムを実装しています
Pythonがメール機能を実装する方法
Python3はシングルトンデザインパターンを実装しています
Pythonは為替レート変換操作を実装します
Pythonは文字列と数値のスプライシングを実装します
Pythonは10の古典的なソートアルゴリズムを実装しています
PythonはユニバーサルWebフレームワークを実装しています
Pythonは、メールを送信するために126のメールボックスを実装しています
PythonはAIフェイスチェンジ機能を実装しています
Pythonは最も急な降下方法を実装します
Pythonは実際の銀行システムを実装しています
Pythonはftpファイル転送機能を実装しています
Pythonはユーザー名とパスワードの検証を実装しています
Pythonがタイマー機能を実装する方法
Pythonは航空機戦争プロジェクトを実装します
Pythonは写真の水平ステッチを実装しています
PythonはGIFグラフを逆さまに実装します
Pythonは2つのスレッドの代替実行を実装します
PythonはTowerofHanoiゲームを解決します