Create a Streamlit app that runs the game of tic-tac-toe.
Drop files here
or click to upload
import numpy as np
import streamlit as st
# Initialize game state
if "board" not in st.session_state:
st.session_state.board = np.full((3, 3), None)
if "turn" not in st.session_state:
st.session_state.turn = "X"
if "winner" not in st.session_state:
st.session_state.winner = None
# Function to check for a winner
def check_winner(board):
for row in board:
if np.all(row == "X"):
return "X"
if np.all(row == "O"):
return "O"
for col in range(3):
if np.all(board[:, col] == "X"):
return "X"
if np.all(board[:, col] == "O"):
return "O"
if np.all(np.diag(board) == "X") or np.all(np.diag(np.fliplr(board)) == "X"):
return "X"
if np.all(np.diag(board) == "O") or np.all(np.diag(np.fliplr(board)) == "O"):
return "O"
return None
# Display the board
st.title("Tic Tac Toe")
cols = st.columns(3)
for i in range(3):
for j in range(3):
if cols[j].button(st.session_state.board[i][j] if st.session_state.board[i][j] else " ", key=f"{i}-{j}"):
if st.session_state.board[i][j] is None and st.session_state.winner is None:
st.session_state.board[i][j] = st.session_state.turn
st.session_state.winner = check_winner(st.session_state.board)
st.session_state.turn = "O" if st.session_state.turn == "X" else "X"
# Display winner message
if st.session_state.winner:
st.success(f"Player '{st.session_state.winner}' wins!")
# Reset game
if st.button("Reset Game"):
st.session_state.board = np.full((3, 3), None)
st.session_state.turn = "X"
st.session_state.winner = None
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?