问题标签 [pygame]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1917 浏览

python - 我应该使用 pgreloaded 吗?还是pygame的颠覆?

我现在正在使用带有 python 2.6 的 pygame,但我想改用 python 3.1.1。普通的 pygame 只适用于 2.x,但我认为 subversion 的适用于 3.x。但是 pgreloaded 呢?那还可以用吗?普通的 pygame 实际上也适用于 3.1,但不适用于 os x(至少没有下载)。有没有人真正使用 pgreloaded 或颠覆 pygames?所以无论如何,我应该使用 pygame subversion、pgreloaded 还是坚持使用当前的 pygame?我并不真正关心与其他事物或分发兼容。

谢谢!

编辑:好的,我摆脱了 python 2.6,安装了 3.1,使用 svn 命令获取 pygame,尝试运行 python3 setup.py,没有工作,将 setup.py 中的 raw_input 更改为 input(),工作,现在我的 pygames (这非常简单,以至于它们在 2.6 和 3.1 下的工作方式相同)与 python 3.1 一起运行。:) 我没有得到 pgreloaded,因为没有它的文档。

0 投票
5 回答
10925 浏览

python - Python - 虚拟环境,python 3?

似乎每个人都推荐 virtualenv 用于多个 python 版本(在 osx 上),但它甚至可以与 python 3.0 一起使用吗?我下载了它,但它似乎没有......而且我真的不明白它是如何工作的,你可以一次“打开”环境吗?我想要的是离开系统 python 2.5(显然),并让 python 3.1.1 和 subversion pygame 来编写我自己的东西,以及 python 2.6 和正常的稳定 pygame 用来运行其他东西,比如从 pygame 下载的 pygame 游戏.org。关于如何实现这一点的任何帮助?谢谢。

好的,我意识到 virtualenv 不是我想要的。

0 投票
2 回答
556 浏览

python - 关闭 Pygame alpha

我有一个正在开发的电脑游戏,我想给用户一个选项来关闭 alpha 合成以提高速度。Pygame 不是到处进行检查,而是有一个全局选项来表示“不要使用 alpha”,这样它就会忽略我对 set_alpha 等的所有调用?

0 投票
3 回答
11588 浏览

python - 如何使 python 窗口以“始终在顶部”运行?

我在 python 中运行一个小程序,它启动一个需要保持在所有其他窗口之上的小窗口。我相信这是特定于操作系统的,它是如何在带有 GNOME 的 GNU-Linux 中完成的?

[更新 - Windows 解决方案]

可爱,我想我成功了。我在 Vista 64 位的 Eclipse 中使用 Python 2.5.4 和 Pygame 1.9.1。因此,这适用于 Windows 系统。该SetWindowPos功能记录在此处。我将在我的解释中提到这一点。

进口:

然后我在 user32 中设置了一个调用“SetWindowPos”的变量:

现在,假设我刚刚做了一个窗口:

下一行是关键。这会将窗口设置在其他窗口的顶部。

基本上,您向hWnd(Window Handle) 提供从调用返回的窗口 ID display.get_wm_info()。现在该函数可以编辑您刚刚初始化的窗口。

-1是我们的hWndInsertAfter

MSDN 网站说:

可以通过将 hWndInsertAfter 参数设置为 HWND_TOPMOST 并确保未设置 SWP_NOZORDER 标志,或者通过设置窗口在 Z 顺序中的位置,使其位于任何现有的最顶层窗口之上,可以使窗口成为最顶层窗口。当非最顶层窗口成为最顶层时,其拥有的窗口也被置为最顶层。然而,它的所有者并没有改变。

因此,-1确保窗口高于任何其他现有的最顶层窗口,但这可能不适用于所有情况。也许-2胜过-1?它目前对我有用。:)

xy指定正在设置的窗口的新坐标。SetWindowPos我希望窗口在调用函数时保持在当前位置。唉,我找不到一种方法可以轻松地将当前窗口 (x,y) 位置传递给函数。我能够找到解决方法,但假设我不应该在这个问题中引入新主题。

应该指定窗口的0, 0,新宽度和高度,以像素为单位。好吧,该功能已经在您的pygame.display.set_mode()函数中,所以我将它们保留为 0。0x0001忽略这些参数。

0x0001对应于 SWP_NOSIZE 并且是我唯一的 uFlag。所有可用 uFlags 的列表都在提供的文档页面上。它们的一些十六进制表示如下:

  • SWP_NOSIZE = 0x0001
  • SWP_NOMOVE = 0x0002
  • SWP_NOZORDER = 0x0004
  • SWP_NOREDRAW = 0x0008
  • SWP_NOACTIVATE = 0x0010
  • SWP_FRAMECHANGED = 0x0020
  • SWP_SHOWWINDOW = 0x0040
  • SWP_HIDEWINDOW = 0x0080
  • SWP_NOCOPYBITS = 0x0100
  • SWP_NOOWNERZORDER = 0x0200
  • SWP_NOSENDCHANGING = 0x0400

应该是这样!希望对你有帮助!

感谢 John Popplewell 在 john@johnnypops.demon.co.uk 的帮助。

0 投票
1 回答
577 浏览

python - 在pygame中加载透明背景精灵的问题

我正在尝试使用以下代码将透明图像加载到 pygame 中:

出于某种原因,每次我加载图像时,背景都会自动变为黑色?在这种情况下,我没有使用颜色键,因为我的图像最终会在它们周围出现一个白色边框,考虑到我的游戏背景不断变化,这非常明显。

有任何想法吗?

感谢和问候

0 投票
4 回答
192 浏览

pygame - 需要一些关于 bitblit 如何工作的建议

我正在使用 pygame 创建我的第一个游戏,我发现为了使事物动画化,最流行的方法是使用 bit blit。
但是,我对此有几个问题:

  1. 据我了解,当您使用 bit blit 时,您必须在屏幕上“重绘”之前存在的每个对象,以使其正常工作。它是否正确?

  2. 如果是这样...我正在使用矩形(矩形)绘制建筑物的“场景”(每个建筑物都有不同的颜色(随机生成),不同的高度(随机),并且它们还有两种不同颜色交替的窗户)。对于我的 Building 类来说,记住建筑物及其窗户的每种颜色的最佳方式是什么,这样当我对建筑物进行位 blit 时,建筑物不会获得不同的颜色以使其更逼真?

0 投票
1 回答
1212 浏览

python - 用 python 播放声音并在播放过程中改变它们的音调?

有没有办法做到这一点?另外,我需要它来使用 pygame,因为我想要在我的游戏中使用音频。我问这个是因为我在 pygame 中没有看到任何音调变化功能。有人知道吗?

更新:

我需要做一些事情,比如汽车加速的噪音。不知道是音色还是音色。

0 投票
3 回答
543 浏览

python - 对需要另一个扩展的 Python 进行 C 扩展

我有几个 Python 函数,可用于简化 Pygame 的游戏开发。我将它们放在 Python 路径中名为 helper.py 的文件中,因此我可以从我制作的任何游戏中导入它们。我想,作为学习 Python 扩展的练习,将此模块转换为 C。我的第一个问题是我需要使用 Pygame 中的函数,我不确定这是否可能。Pygame 安装了一些头文件,但它们似乎没有 C 版本的 Python 函数。也许我错过了一些东西。

我该如何解决这个问题?作为一种解决方法,该函数当前接受一个函数参数并调用它,但这不是理想的解决方案。

顺便说一下,使用 Windows XP、Python 2.6 和 Pygame 1.9.1。

0 投票
3 回答
2120 浏览

python - 用pygame定位声音?

有没有办法在 Pygame 中进行平移或 3d 声音?我发现控制声音播放的唯一方法是设置左右声道的音量。

0 投票
1 回答
225 浏览

python - 等待事件,但不要将其从队列中移除

有什么方法可以让程序休眠直到事件发生,但不将其从队列中取出?

类似于http://www.pygame.org/docs/ref/event.html#pygame.event.wait

还是我需要使用 pygame.event.wait,然后将该事件放回队列中?

只是为了澄清,我不需要知道那个事件发生的时候是什么,只要一个事件发生了。