我对 python 很陌生,但我想通过制作游戏来学习它,而 pygame 似乎是最好的选择。由于 PyPy 是 Python 的最快实现(我认为),我决定使用它。但我不知道如何让这两者一起工作。
我在窗户上。
如果有人这么好心地一步一步地告诉我我需要做什么,我将非常感激。
到目前为止,我已经安装(解压到文件夹)PyPy,将 pypy.exe 设置为默认打开 .py 文件,安装 Pygame 并尝试运行示例 .py 文件之一。我在文件中的第一行导入时收到“找不到模块 pygame”错误。
pygame 与 pypy 不兼容,因此要使用它,您必须坚持使用 cPython。
更新(2018 年 4 月):
正如在这个答案中所指出的,PyPy v6.0版本现在可以与 pygame 一起使用——虽然还没有与当前的稳定版本(pygame 1.9.3)一起使用,但与当前的开发分支(1.9.4.dev0)一起使用。
通过以下方式在 ubuntu 17.10 上测试:
sudo apt build-dep python-pygame
./bin/pypy3 -m ensurepip
./bin/pypy3 -m pip install 'Pygame>=1.9.4.dev0'
./bin/pypy3 -m pygame.examples.aliens
适用于 pypy3 和 pypy2 版本。
Pygame 游戏实际上花费很少的时间来运行 python 代码。绝大多数人都花在了 SDLfill
和flip
运营上。大多数fill
s 是不必要的。这有多重要?好吧,拿走我的电脑。假设您编写了一个游戏,该游戏有一个循环,只为背景绘制一种颜色。它将获得大约 40 fps。这是因为它基本上是单独访问每个像素并写入它。这是每帧使用 200 x 300 = 60000 次操作,什么都不做。
因此,不要绘制整个背景,只需绘制在前一帧上绘制的部分。
这会使您的代码更加复杂,但会产生巨大的性能提升。
另外,不要忘记运行cProfile以查看问题区域在哪里。看,不要猜。
看起来 PyPy v6(2018 年 4 月)将改善这种情况并使 PyPy 与 PyGame 和其他 C python 扩展兼容。有关示例,请参见https://renesd.blogspot.co.uk/2018/03/pygame-on-pypy-usable.html 。
我们目前在包索引上还没有 PyPy 的二进制文件。所以你需要从源码编译pygame,而不是仅仅使用pip来安装pygame。
获取 PyPy 版本 6+(或每晚下载一个)。
windows上从源码编译的说明可以使用:https ://www.pygame.org/wiki/CompileWindows
只需使用pypy3
二进制而不是那个python
。