Spaces:
Sleeping
Sleeping
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)) | |
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}) | |
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']}) | |
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}) | |
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) |