File size: 2,712 Bytes
f8de470
 
 
b33ffc9
 
 
 
 
f8de470
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b33ffc9
f8de470
b33ffc9
 
 
f8de470
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
from flask import Flask, request, jsonify
import random
import string
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

# Store room information in memory (replace with a database in production).
rooms = {}

started_rooms = {}

def generate_room_code():
    # Generate a random 6-character room code.
    return ''.join(random.choices(string.ascii_uppercase, k=6))

@app.route('/create-room', methods=['POST'])
def create_room():
    room_code = generate_room_code()
    rooms[room_code] = {'players': [], 'started': False}

    player_name = request.json.get('name')
    if not player_name:
        return jsonify({'error': 'Player name is required'})

    # Add the player to the room.
    player_id = len(rooms[room_code]['players']) + 1
    rooms[room_code]['players'].append({'id': player_id, 'name': player_name})

    return jsonify({'room_code': room_code})

@app.route('/join-room/<room_code>', methods=['POST', 'GET'])
def join_room(room_code):
    if request.method == 'POST':
        if room_code not in rooms:
            return jsonify({'error': 'Room not found'}), 404

        if len(rooms[room_code]['players']) >= 2:
            return jsonify({'error': 'Room is full'})

        player_name = request.json.get('name')
        if not player_name:
            return jsonify({'error': 'Player name is required'})

        # Add the player to the room.
        player_id = len(rooms[room_code]['players']) + 1
        rooms[room_code]['players'].append({'id': player_id, 'name': player_name})

        return jsonify({'player_id': player_id, 'players': rooms[room_code]['players']})

    if request.method == 'GET':
        if room_code not in rooms:
            return jsonify({'error': 'Room not found'}), 404

        ready = False

        if len(rooms[room_code]['players']) == 2:
            ready = True

        return jsonify({'players': rooms[room_code]['players'], 'ready': ready, 'started': rooms[room_code]['started']})


@app.route('/start-room/<room_code>', methods=['POST'])
def start_room(room_code):
    if room_code not in rooms:
        return jsonify({'error': 'Room not found'}), 404

    rooms[room_code]['started'] = True

    return jsonify({'success': True})



@app.route('/leave-room/<room_code>/<int:player_id>', methods=['POST'])
def leave_room(room_code, player_id):
    if room_code not in rooms:
        return jsonify({'error': 'Room not found'}), 404

    rooms[room_code]['players'] = [player for player in rooms[room_code]['players'] if player['id'] != player_id]

    if not rooms[room_code]['players']:
        del rooms[room_code]

    return jsonify({'message': 'Player has left the room'})


if __name__ == '__main__':
    app.run(debug=True)