我使用pygame制作了一个小的空间入侵者游戏,我想知道我是否可以使用pyscript在浏览器上玩它。这可能吗?我必须重写所有内容吗?
不,PyScript目前不支持Pygame。我不确定找出支持的包的最佳方法是什么,但我已经设法拼凑出以下内容:
- PyScript使用Pyodide来加载包,所以只有Pyodide支持的包才能在PyScript中加载。这意味着使用Pyodide构建的包或纯Python包可以在PyPI或其他url上获得。 pyoide还不支持Pygame
您可以使用下面的测试脚本来查看一个包是否被支持:
<html>
<head>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<py-env>
- pygame
</py-env>
</head>
<body>
<h1>PyScript import test script</h1>
<py-script>
import pygame
</py-script>
</body>
</html>
这基本上只是一个"试试它,看看会发生什么"如果不支持某个包,将在控制台中抛出错误的脚本。您将看到的错误将是
ValueError:找不到纯Python 3 wheel for 'pygame'。你可以使用
micropip.install(..., keep_going=True)
获取所有的列表缺少轮子的包装
是的,这是可能的,但还没有实现,因为:
pyscript使用pyodide, pyodide不是为游戏优化的,而是为科学堆栈和笔记本演示优化的。
今天,我建议使用pygbag https://pypi.org/project/pygbag/从https://pygame-web.github.io。它使用与pygame相同的原理,来自Panda3D webgl端口,使用现代浏览器的Web Assembly。
(如果你真的想支持pyscript标签,你可能会找到一个方法)。
无论如何你不能使用pygame的大部分内容,因为pyscript只会渲染python一次,所以你不能做像循环这样的东西,而pygame做像改变帧这样的事情是必要的。