awacke1's picture
Update app.py
4b0e879
raw
history blame
2.09 kB
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()