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

2025-02-08 08:52:00
admin
原创
84
摘要:问题描述:我的电脑上安装了 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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2560  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1552  
  IPD(Integrated Product Development)流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。其中,技术评审与决策评审是IPD流程中至关重要的环节,它们既有明显的区别,又存在紧密的协同关系。深入理解这两者的区别与协同,对于企业有效实施IPD流程,提升产品开发效率与质量具有重要意义...
IPD管理流程   1  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、ClickUp、Freshdesk、GanttPRO、Planview、Smartsheet、Asana、Nifty、HubPlanner、Teamwork。在当今快速变化的商业环境中,项目管理软件已成为企业提升效率、优化资源分配和确保项目按时交付的关键工具。然而...
项目管理系统   2  
  建设工程项目质量关乎社会公众的生命财产安全,也影响着企业的声誉和可持续发展。高质量的建设工程不仅能为使用者提供舒适、安全的环境,还能提升城市形象,推动经济的健康发展。在实际的项目操作中,诸多因素会对工程质量产生影响,从规划设计到施工建设,再到后期的验收维护,每一个环节都至关重要。因此,探寻并运用有效的方法来提升建设工程...
工程项目管理制度   3  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用