import streamlit as st def multiplayer_game(): st.title("Tic Tac Toe") game_state = [[' ' for i in range(3)] for j in range(3)] player = "X" winner = None def check_winner(): # Check rows for row in game_state: if row == ["X", "X", "X"]: return "X" elif row == ["O", "O", "O"]: return "O" # Check columns for col in range(3): if game_state[0][col] == game_state[1][col] == game_state[2][col] == "X": return "X" elif game_state[0][col] == game_state[1][col] == game_state[2][col] == "O": return "O" # Check diagonals if (game_state[0][0] == game_state[1][1] == game_state[2][2] == "X" or game_state[0][2] == game_state[1][1] == game_state[2][0] == "X"): return "X" elif (game_state[0][0] == game_state[1][1] == game_state[2][2] == "O" or game_state[0][2] == game_state[1][1] == game_state[2][0] == "O"): return "O" return None def render_game_state(): for row_num, row in enumerate(game_state): row_string = "|".join(row) st.write(row_string) if row_num != 2: st.write("-+-+-") for i in range(9): render_game_state() st.write("Player ", player, " turn. Choose a square (1-9).") chosen_square = st.number_input("", min_value=1, max_value=9, key=f"number_input_{i}") row = (chosen_square - 1) // 3 col = (chosen_square - 1) % 3 if game_state[row][col] != " ": st.write("Square already taken. Please choose another.") continue game_state[row][col] = player winner = check_winner() if winner: st.write("Player ", winner, " wins!") break if player == "X": player = "O" else: player = "X" if not winner: st.write("It's a draw!") if __name__ == "__main__": multiplayer_game()