import streamlit as st import json # Set page config to wide mode st.set_page_config(layout="wide") # Initialize session state if not already done if 'board' not in st.session_state: st.session_state.board = [ ['♜', '♞', '♝', '♛', '♚', '♝', '♞', '♜'], ['♟', '♟', '♟', '♟', '♟', '♟', '♟', '♟'], [None] * 8, [None] * 8, [None] * 8, [None] * 8, ['♙', '♙', '♙', '♙', '♙', '♙', '♙', '♙'], ['♖', '♘', '♗', '♕', '♔', '♗', '♘', '♖'] ] if 'current_player' not in st.session_state: st.session_state.current_player = 'white' if 'selected_piece' not in st.session_state: st.session_state.selected_piece = None if 'last_move' not in st.session_state: st.session_state.last_move = None def handle_move(): if 'last_move' in st.session_state and st.session_state.last_move: move_data = json.loads(st.session_state.last_move) row, col = move_data['row'], move_data['col'] if st.session_state.selected_piece is None: # Select a piece if st.session_state.board[row][col] is not None: st.session_state.selected_piece = {'row': row, 'col': col} else: # Move the selected piece from_row = st.session_state.selected_piece['row'] from_col = st.session_state.selected_piece['col'] # Make the move st.session_state.board[row][col] = st.session_state.board[from_row][from_col] st.session_state.board[from_row][from_col] = None st.session_state.selected_piece = None st.session_state.current_player = 'black' if st.session_state.current_player == 'white' else 'white' # Clear the last move st.session_state.last_move = None st.rerun() # Create the HTML/JavaScript for the chess board chess_board_html = f"""