import random import string from flask import Flask, request, jsonify, render_template import time from threading import Timer app = Flask(__name__) app.config['SECRET_KEY'] = 'your-secret-key' # Replace with a real secret key # In-memory storage for game sessions and player data sessions = {} waiting_session = None def generate_session_id(): return ''.join(random.choices(string.digits, k=4)) def generate_player_id(): return ''.join(random.choices(string.ascii_uppercase + string.digits, k=6)) def create_game_session(): global waiting_session session_id = generate_session_id() while session_id in sessions: session_id = generate_session_id() sessions[session_id] = { 'players': [], 'words': {}, 'current_player': None, 'guesses': set(), 'incorrect_guesses': 0, 'last_activity': time.time() } waiting_session = session_id return session_id def join_game_session(): global waiting_session if waiting_session and waiting_session in sessions: session_id = waiting_session is_new_session = False else: session_id = create_game_session() is_new_session = True player_id = generate_player_id() sessions[session_id]['players'].append(player_id) sessions[session_id]['last_activity'] = time.time() if len(sessions[session_id]['players']) == 2: waiting_session = None return session_id, player_id, is_new_session @app.route('/') def index(): return render_template('index.html') @app.route('/play', methods=['POST']) def play(): session_id, player_id, is_new_session = join_game_session() status = 'waiting' if is_new_session else 'ready' return jsonify({ 'session_id': session_id, 'player_id': player_id, 'status': status }) @app.route('/check_status/', methods=['GET']) def check_status(session_id): if session_id in sessions: status = 'ready' if len(sessions[session_id]['players']) == 2 else 'waiting' return jsonify({'status': status}) return jsonify({'error': 'Session not found'}), 404 @app.route('/submit_word', methods=['POST']) def submit_word(): data = request.json session_id = data['session_id'] player_id = data['player_id'] word = data['word'].lower() if len(word) != 7: return jsonify({'error': 'Word must be 7 letters long'}), 400 sessions[session_id]['words'][player_id] = word sessions[session_id]['last_activity'] = time.time() if len(sessions[session_id]['words']) == 2: sessions[session_id]['current_player'] = sessions[session_id]['players'][0] return jsonify({'status': 'game_started'}) return jsonify({'status': 'waiting_for_opponent'}) # ... (rest of the code remains the same) if __name__ == '__main__': cleanup_inactive_sessions() app.run(host='0.0.0.0', port=7860)