Задать вопрос
  • Как создать комнату в браузерной игре?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    1. При создании комнаты - сохранять код в базе данных;
    2. При обращении по url получать данные о комнате фильтруя по коду из url;
    Ответ написан
    1 комментарий
  • Как создать комнату в браузерной игре?

    @rPman
    Начни с простого чата, есть готовые примеры на основе websocket (на javascript там очень просто), идеологически это именно то что тебе нужно, потому что мультиплеерная игра это буквально чат между фронтэндами и бакэндом в обе стороны.

    Не смотри на фреймворки, ПОКА они тебе только помешают, тебе нужно понять принцип.

    Вопрос слишком всеобъемлющий, разбей задачу на подзадачи и спрашивай то что не понимаешь.
    Ответ написан
    1 комментарий
  • Как создать комнату в браузерной игре?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Без бэкенда тут не обойтись. Знаете python? Если нет, стоит подучить. Если да, то знаете ли какой-нибудь фреймворк, типа Flask/Django? Если не знаете, то опять же стоит освоить. Без этого по-нормальному вы ничего не напишите.
    На flask простейший пример будет выглядеть примерно так

    from flask import Flask, redirect, url_for, request
    import random
    import string
    
    app = Flask(__name__)
    
    rooms = {} # здесь будем хранить комнаты и игроков, которые к ним подключились
    
    def generate_room_code(): # функция генерация id комнаты
        return ''.join(random.choices(string.ascii_uppercase, k=4))
    
    @app.route('/')
    def index(): # тут делаем стартовую страницу. Сейчас это зашито прямо в скрипт, но можно возвращать файл
        return '''
        <!doctype html>
        <html>
            <head>
                <title>Новая игра</title>
            </head>
            <body>
                <h1>Добро пожаловать!</h1>
                <a href="/start">Начать новую игру</a>
            </body>
        </html>
        '''
    
    @app.route('/start')
    def start(): # это будет выполняться после нажатия на ссылку "Начать игру"
        room_code = generate_room_code()
        rooms[room_code] = [] # тут добавляем id комнаты. Список пустой, т. к. игроков ещё нет
        return redirect(url_for('waiting_room', room_code=room_code)) # перенаправляем пользователя в комнату
    
    @app.route('/waiting/<room_code>')
    def waiting_room(room_code): # тут делаем комнату.
        if room_code not in rooms:
            return "Not found", 404 # если нет такой комнаты
        return f'''
        <!doctype html>
        <html>
            <head>
                <title>Комната</title>
            </head>
            <body>
                <h1>Комната {room_code}</h1>
                <form action="/join" method="post">
                    <input type="hidden" name="room_code" value="{room_code}">
                    <input type="text" name="player_name" placeholder="Имя">
                    <button type="submit">Присоединиться</button>
                </form>
                <h2>Игроки:</h2>
                <ul>
                    {''.join([f'<li>{player}</li>' for player in rooms[room_code]])}
                </ul>
            </body>
        </html>
        '''
    
    @app.route('/join', methods=['POST'])
    def join_room(): # обрабатываем запрос на присоединение
        room_code = request.form['room_code']
        player_name = request.form['player_name']
        if room_code in rooms:
            # добавляем игрока и перенаправляем его обратно
            rooms[room_code].append(player_name)
            return redirect(url_for('waiting_room', room_code=room_code))
        return "Not found", 404
    
    if __name__ == '__main__':
        app.run(debug=True)
    Это, конечно, просто пример, для того, чтобы вы понимали, как это выглядит

    ИМХО Flask или Bottle (вообще изи) для вас самое лучшее, если вы пока не в теме. Django для новичков не подходит. Ну и конечно, думайте, точно ли вам нужен python
    Ответ написан
    2 комментария