Открытие окна pygame с веб-страницы с помощью django python

Я пытаюсь создать сайт, на котором можно играть в игры. В конечном итоге вы сможете нажать на кнопку и запустить окно pygame для игры. Чтобы проверить, смогу ли я сделать это с помощью Django, я пытаюсь запустить окно pygame при переходе на главную страницу в качестве доказательства концепции. Однако мне трудно понять, как именно запустить окно.

Вот моя первая попытка в views.py:

from .games import game

def home_page(request):
    title = "Home Page"
    template_name = "home.html"
    if request.user.is_authenticated:
        message = f'Hello there, {request.user}!'
    else:
        message = 'Hello there!'
    game.main()
    return render(request, template_name, {'title': title, 'message': message})

Мой game.py (расположенный в папке games, которая находится в той же директории, что и мой views.py:

import pygame
import sys

def main():
    pygame.init()

    screen = pygame.display.set_mode((50, 50))
    pygame.display.set_caption("Test")

    while True:
        screen.fill((255, 255, 255))
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
        pygame.display.update()

Когда я запускаю сервер и пытаюсь зайти на 127.0.0.1:8000 (где находится мой сайт), ни страница, ни окно pygame не загружаются. Когда я вышел из сервера, веб-страница показала, что не может найти сайт. Я думаю, это произошло потому, что код так и не достиг части return render(request, template_name, {'title': title, 'message': message}) в моем views.py.

Как открыть окно pygame при переходе на главную страницу?

Не могли бы вы уточнить, пытаетесь ли вы запустить игру локально на том же компьютере, на котором запущен django, или вы действительно пытаетесь запустить игру внутри браузера клиента, на удаленно подключенном компьютере? Если вы пытаетесь запустить игру "внутри" сайта, на удаленном компьютере, pygame не подходит. Afaik нет простого способа обеспечить выполнение python в браузере.

В принципе, такой подход не сработает, поскольку вы выполняете код на своем сервере, но хотите, чтобы окно pygame появилось на экране человека, который посещает ваш сайт. Ваш код должен выполняться на стороне клиента. Ваши варианты - вынести все за пределы браузера (т.е. предоставить пользователю файл для загрузки, и пусть он запускает игру на своей машине) или каким-то образом использовать JavaScript в качестве посредника, как в Pyodide или Brython. Вероятно, последний подход не будет работать, если вы хотите использовать pygame.

Вернуться на верх