是否可以在浏览器中运行 pygame 或 pyglet?

2025-02-08 08:52:00
admin
原创
56
摘要:问题描述:我的电脑上安装了 3 个游戏库:pyglet、pygame 和 Panda3D。我想创建一个 2D 游戏并将其制作成网络浏览器游戏,以便我可以将其放在 Facebook 上。我知道Panda3D有一个网页浏览器插件。Panda3D主要用于 3D 游戏。因此,我想问一下,是否可以在浏览器中玩pygle...

问题描述:

我的电脑上安装了 3 个游戏库:pyglet、pygame 和 Panda3D。

我想创建一个 2D 游戏并将其制作成网络浏览器游戏,以便我可以将其放在 Facebook 上。

我知道Panda3D有一个网页浏览器插件。Panda3D主要用于 3D 游戏。

因此,我想问一下,是否可以在浏览器中玩pyglet或pygame游戏?如果不行,您推荐什么 Python 库?


解决方案 1:

pyglet 和 pygame 都无法在浏览器中运行。如果您的目标是 Web 浏览器,我根本不建议您使用 Python。JavaScript(带有 HTML5 Canvas)、Flash 或 Java 小程序更适合该环境。

如果您热衷于使用 Python,那么有许多项目可以将 Python 编译为 JavaScript。Python wiki 上提到了一些。以下是其中一些:

  • 雕塑

  • 睡衣

  • 皮亚科

但是,您需要编写自己的图形和音频系统,因为这些项目都无法将 pyglet 和 pygame 所需的本机代码转换为 JavaScript。

解决方案 2:

今天,我建议使用来自https://pygame-web.github.io的pygbag。它使用与 Panda3D webgl 端口(不是旧插件)相同的原理,使用适用于现代浏览器的 Web Assembly。

安装:pip3 install pygbag

用法:python3 -m pygbag your_game_folder/main.py

使用 pygbag 工具,您可以在所有现代浏览器(以及 Safari iOS≥15)中直接托管/运行/打包您的 pygame-ce/panda3D 桌面项目。

它已经被广泛应用于2D 游戏开发,并且您也可以启动3D 项目。

您还可以在 REPLit 中将 pygame-ce wasm 与 pygbag 结合使用,以获得性能提升(使用过的人说效果非常好)。有关详情,请参阅https://github.com/pygame-web/pygbag/issues/110

解决方案 3:

它需要一点重新编程,但我使用 Brython 和 GameJS 将 pygame 库“移植”到浏览器/nodewebkit。您可以在浏览器中使用 pygame 和 python 3 版本进行编程。您可以在https://github.com/asherwunk/pygjs查看它

解决方案 4:

在浏览器中运行 pygame 的另一种选择是使用pygbag。使用以下命令安装 pygbagpip install pygbag

pip install pygbag

将代码放在名为main.py的文件中,并像这样调整你的 pygame 代码:

import pygame
import asyncio

pygame.init()

# initializations: pygame.display.set_mode, ...
# [...]

def main():

    run = True
    while run:

        # application loop: pygame.event.get(), pygame.display.flip(), ...
        # [...]

        await asyncio.sleep(0)
        
asyncio.run(main())

使用以下命令构建项目:

pygbag .

最小示例:

现场演示

import pygame
import asyncio

pygame.init()
window = pygame.display.set_mode((300, 300))
clock = pygame.time.Clock()

rect = pygame.Rect(0, 0, 20, 20)
rect.center = window.get_rect().center
vel = 5

async def main():
    run = True
    while run:
        clock.tick(60)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
            if event.type == pygame.KEYDOWN:
                print(pygame.key.name(event.key))

        keys = pygame.key.get_pressed()
        
        rect.x += (keys[pygame.K_RIGHT] - keys[pygame.K_LEFT]) * vel
        rect.y += (keys[pygame.K_DOWN] - keys[pygame.K_UP]) * vel
            
        rect.centerx = rect.centerx % window.get_width()
        rect.centery = rect.centery % window.get_height()

        window.fill(0)
        pygame.draw.rect(window, "red", rect)
        pygame.display.flip()
        await asyncio.sleep(0)

    pygame.quit()
    exit()

asyncio.run(main())

解决方案 5:

一种选择是使用repl.it。它允许创建 Python/PyGame 脚本和多人编码。创建新repl时,选择 Pygame 模板:

IT科技


例子:![IT科技](https://i.sstatic.net/5jD0C.png) repl.it/@Rabbid76/PyGame-TransparentShapes

IT科技

解决方案 6:

我刚刚发现这个网站https://trinket.io/features/pygame允许你从这个网站运行 pygame!但是它非常慢。它应该可以在你的浏览器中运行,但运行它需要很长时间。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用