![見出し画像](https://assets.st-note.com/production/uploads/images/139320280/rectangle_large_type_2_790f37a871d7a80569100426627773a0.png?width=1200)
Photo by
ryonakano
3x3のマルバツゲーム(Tic-Tac-Toe)のPythonコードを書きました!
ターミナルやコマンドプロンプトを通じて交互に打ち手を入力します。
注意点として、行と列は0から始まります。
(3行, 2列)を指定する時は、(2 1)と入力します。
def print_board(board):
"""ボードを表示する関数"""
for row in board:
print(" | ".join(row))
print("-" * 9)
def check_winner(board, player):
"""勝者がいるかどうかをチェックする関数"""
# 横、縦、斜めの勝利条件
win_conditions = [
[board[0][0], board[0][1], board[0][2]],
[board[1][0], board[1][1], board[1][2]],
[board[2][0], board[2][1], board[2][2]],
[board[0][0], board[1][0], board[2][0]],
[board[0][1], board[1][1], board[2][1]],
[board[0][2], board[1][2], board[2][2]],
[board[0][0], board[1][1], board[2][2]],
[board[0][2], board[1][1], board[2][0]]
]
# どれかの勝利条件を満たしているか
return [player, player, player] in win_conditions
def get_valid_input(board):
"""プレイヤーから有効な入力を受け取る関数"""
while True:
try:
x, y = map(int, input("次の手を '行 列' の形式で入力してください(例:1 2): ").split())
if board[x][y] == " ":
return x, y
else:
print("その場所にはすでにマークがあります。他の場所を選んでください。")
except (IndexError, ValueError):
print("無効な入力です。もう一度入力してください。")
def main():
"""マルバツゲームのメイン関数"""
# ゲームボードの初期化
board = [[" " for _ in range(3)] for _ in range(3)]
current_player = "X"
for _ in range(9):
print_board(board)
x, y = get_valid_input(board)
board[x][y] = current_player
if check_winner(board, current_player):
print_board(board)
print(f"プレイヤー {current_player} の勝利です!")
return
# プレイヤーの交換
current_player = "O" if current_player == "X" else "X"
print_board(board)
print("引き分けです!")
if __name__ == "__main__":
main()
このファイルを例えば、「tictactoe.py」などのファイル名で保存します。
そして、ターミナルで、
python tictactoe.py
を実行すると、遊ぶことができます!
【SNS】
X (Twitter): https://twitter.com/satoshihgsn_jp
Instagram: https://www.instagram.com/satoshihgsn_jp/
この記事が気に入ったらサポートをしてみませんか?