Spaces:
Build error
Build error
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() |