.. image:: https://raw.githubusercontent.com/pygame/pygame/main/docs/reST/_static/pygame_logo.svg :alt: pygame :target: https://www.pygame.org/
|AppVeyorBuild| |PyPiVersion| |PyPiLicense| |Python3| |GithubCommits| |BlackFormatBadge|
Pygame_是一个免费开源的跨平台库,用于使用Python开发多媒体应用程序,如视频游戏。它使用Simple DirectMedia Layer库
_和其他几个流行的库来抽象最常用的功能,使编写这些程序变得更加直观。
我们需要您的帮助_来使pygame变得尽可能好!欢迎新的贡献者。
安装
在安装pygame之前,您必须检查您的机器上是否已安装Python。要确认,请打开命令提示符(如果您使用Windows)或终端(如果您使用MacOS或Linux),并输入以下内容: ::
python --version
如果出现"Python 3.8.10"之类的消息,则表示Python已正确安装。如果出现错误消息,则表示尚未安装。然后您必须前往官方网站<https://www.python.org/downloads/>
_下载。
一旦安装了Python,您还需要进行最后一次检查:查看是否安装了pip。通常,pip会与Python预装,但我们永远不确定。与Python一样,输入以下命令: ::
pip --version
如果出现"pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)"之类的消息,您就可以安装pygame了!要安装它,请输入以下命令: ::
pip install pygame
pygame安装完成后,可以通过输入以下命令快速测试您的库,这将打开预装的众多示例游戏之一: ::
python3 -m pygame.examples.aliens
如果这不起作用,官方网站的入门<https://www.pygame.org/wiki/GettingStarted/>
_部分提供了更多有关特定平台问题的信息,比如将python添加到机器的PATH设置中。
帮助
如果您刚开始使用pygame,您应该能够相当快速地入门。Pygame附带了许多教程和介绍。还有整个库的完整参考文档。浏览文档页面
_上的文档。您也可以通过在终端中运行python -m pygame.docs
来本地浏览文档。如果本地找不到文档,它会转而启动在线网站。
在线文档与GitHub上的pygame开发版本保持同步。这可能比您使用的pygame版本稍新一些。要升级到最新的完整版本,请在终端中运行pip install pygame --upgrade
。
最重要的是,examples目录中有许多可玩的小程序,可以让您立即开始使用代码。
特性
Pygame是一个强大的游戏开发库,提供了广泛的功能来简化您的编码之旅。让我们深入了解pygame所提供的内容:
图形 - 使用pygame,创建动态和引人入胜的图形从未如此简单。该库为2D图形和动画提供了简单而有效的工具,包括对图像、矩形和多边形形状的支持。无论您是经验丰富的游戏开发者还是刚刚入门,pygame都能满足您的需求。
声音 - Pygame还包括播放和操作声音和音乐的支持,使向游戏添加音效和背景音乐变得容易。支持WAV、MP3和OGG文件格式,您有很多选择。
输入 - Pygame提供了直观的函数来处理键盘、鼠标和游戏手柄输入,让您能够快速轻松地在游戏中实现玩家控制。不再需要与复杂的输入代码斗争,pygame使其变得简单。
游戏开发 - 最后,pygame提供了一套专为游戏开发设计的综合工具和功能。从碰撞检测到精灵管理,pygame拥有创建令人兴奋和引人入胜的游戏所需的一切。无论您正在构建平台游戏、益智游戏还是其他任何类型的游戏,pygame都能满足您的需求。
从源代码构建
如果您想使用当前正在开发的功能,或者想为pygame做出贡献,您需要从源代码本地构建pygame,而不是通过pip安装。
从源代码安装相当自动化。最费工夫的部分是编译和安装所有pygame的依赖项。完成后,运行setup.py
脚本,它将尝试自动配置、构建和安装pygame。
有关安装和编译的更多信息可在编译wiki页面
_上找到。
贡献
文档贡献<https://github.com/pygame/pygame/tree/main/docs>
_ - 为主要文档做出贡献的指南编写您的第一个单元测试<http://renesd.blogspot.com/2019/11/draft-2-of-lets-write-unit-test.html>
_ - 如何为Pygame编写第一个Python单元测试的分步指南如何黑客Pygame<https://www.pygame.org/wiki/Hacking>
_ - 有关黑客、开发和修改Pygame的信息适合初学者的问题追踪器<https://github.com/pygame/pygame/labels/good%20first%20issue>
_ - 初学者为项目做出贡献的方式错误和补丁<https://www.pygame.org/wiki/patchesandbugs>
_ - 报告错误沟通工具<https://www.pygame.org/wiki/info>
_ - 更多信息和与Pygame团队联系的方式
致谢
感谢所有为这个库做出贡献的人。特别感谢以下人士。
- Marcus Von Appen:许多更改和修复,1.7.1+版本的freebsd维护者
- Lenard Lindstrom:1.8+版本的windows维护者,许多更改和修复
- Brian Fisher:svn自动构建器、错误追踪器和许多贡献
- Rene Dudfield:许多更改和修复,1.7+版本的发布管理者/维护者
- Phil Hassey:为pygame.org网站所做的工作
- DR0ID:为精灵模块所做的工作
- Richard Goedeken:他的平滑缩放函数
- Ulf Ekström:他的像素完美碰撞检测代码
- Pete Shinners:原作者
- David Clark:填补右手man位置
- Ed Boraas和Francis Irving:Debian包
- Maxim Sobolev:FreeBSD打包
- Bob Ippolito:MacOS和OS X移植(大量工作!)
- Jan Ekhol、Ray Kelm和Peter Nicolai:容忍早期设计理念
- Nat Pryce:开始我们的单元测试
- Dan Richter:文档工作
- TheCorruptor:他令人难以置信的标志和图形
- Nicholas Dudfield:许多测试改进
- Alex Folkner:pygame-ctypes 感谢以下人员提交补丁和修复:Niki Spahiev、Gordon Tyler、Nathaniel Pryce、Dave Wallace、John Popplewell、Michael Urman、Andrew Straw、Michael Hudson、Ole Martin Bjoerndalen、Herve Cauwelier、James Mazer、Lalo Martins、Timothy Stranex、Chad Lester、Matthias Spiller、Bo Jangeborg、Dmitry Borisov、Campbell Barton、Diego Essaya、Eyal Lotem、Regis Desgroppes、Emmanuel Hainry、Randy Kaelber Matthew L Daniel、Nirav Patel、Forrest Voight、Charlie Nolan、Frankie Robertson、John Krukoff、Lorenz Quack、Nick Irvine、Michael George、Saul Spatz、Thomas Ibbotson、Tom Rothamel、Evan Kroske、Cambell Barton。
特别感谢我们的超级捉虫能手:Angus、Guillaume Proux、Frank Raiser、Austin Henry、Kaweh Kazemi、Arturo Aldama、Mike Mulcheck、Michael Benfield、David Lau
还有许多其他人提出了有用的想法,推动这个项目前进,让我们的工作变得更轻松。谢谢你们!
非常感谢那些撰写文档注释和为pygame.org wiki做出贡献的人。
同时也非常感谢那些创作游戏并将其上传到pygame.org网站供他人学习和享受的人。
非常感谢James Paige为pygame提供bugzilla托管服务。
也要特别感谢Roger Dingledine和SEUL.ORG的团队为我们提供出色的托管服务。
依赖项
Pygame显然强烈依赖于SDL和Python。它还链接和嵌入了几个较小的库。字体模块依赖于SDL_ttf,而SDL_ttf又依赖于freetype。mixer(和mixer.music)模块依赖于SDL_mixer。图像模块依赖于SDL_image,SDL_image还可以使用libjpeg和libpng。transform模块为其自身的rotozoom函数嵌入了SDL_rotozoom的一个版本。surfarray模块需要Python NumPy包来处理多维数值数组。 依赖版本:
+----------+------------------------+ | CPython | >= 3.6 (或使用PyPy3) | +----------+------------------------+ | SDL | >= 2.0.8 | +----------+------------------------+ | SDL_mixer| >= 2.0.0 | +----------+------------------------+ | SDL_image| >= 2.0.2 | +----------+------------------------+ | SDL_ttf | >= 2.0.11 | +----------+------------------------+ | SDL_gfx | (可选,已内置) | +----------+------------------------+ | NumPy | >= 1.6.2 (可选) | +----------+------------------------+
许可证
该库在GNU LGPL 2.1版许可下发布,可以在文件"docs/LGPL.txt"中找到。我们保留将该库未来版本置于不同许可下的权利。
这基本上意味着你可以在任何项目中使用pygame,但如果你对pygame本身进行任何更改或添加,这些更改必须以兼容的许可证发布(最好提交回pygame项目)。闭源和商业游戏是可以的。
"examples"子目录中的程序属于公共领域。
有关依赖项的许可证,请参阅docs/licenses。