File size: 2,945 Bytes
7ef7190
 
 
ce1dd56
7ef7190
 
 
 
 
 
 
ce1dd56
7ef7190
 
 
 
 
 
 
 
ce1dd56
7ef7190
 
 
 
 
 
 
 
ce1dd56
 
7ef7190
ce1dd56
7ef7190
 
ce1dd56
 
 
 
94bfcb7
ce1dd56
 
94bfcb7
ce1dd56
7ef7190
 
ce1dd56
 
 
 
 
94bfcb7
7ef7190
 
 
 
 
 
 
94bfcb7
 
ce1dd56
 
 
94bfcb7
ce1dd56
 
 
 
 
 
 
 
7ef7190
 
 
 
 
 
 
ce1dd56
7ef7190
 
ce1dd56
7ef7190
ce1dd56
 
7ef7190
ce1dd56
7ef7190
 
 
94bfcb7
7ef7190
 
 
ce1dd56
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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/<session_id>', 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)