问题标签 [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 投票
1 回答
11473 浏览

python - 如何在 PyGame 中响应鼠标点击精灵?

使您的精灵响应 PyGame 中的鼠标点击的规范方法是什么?

在我的事件循环中,这是一些简单的事情:

关于它的一些问题:

  1. 这是响应鼠标点击的最佳方式吗?
  2. 如果鼠标在精灵上持续按下一段时间怎么办?我如何从中制作单个事件?
  3. 这是通知我所有精灵点击的合理方式吗?

提前致谢

0 投票
2 回答
8038 浏览

python - Pygame中完全透明的窗口?

是否有可能在 Pygame 中获得一个完全透明的窗口(通过它查看桌面)?我已经找到了如何创建一个没有框架的窗口,但似乎没有任何明显的方法可以使它透明。

只要有适用于 Windows 和 Mac OS X 的解决方案,我就愿意与特定于系统的技术/框架联系起来,但我不确定要寻找哪个方向。

我能找到的唯一主题推荐使用 wxPython,这不是我可以为这个特定项目做的事情(需要是 Pygame)。

0 投票
4 回答
4263 浏览

python - PyGame 在同时按下 3 个以上的键时没有接收到事件

我正在PyGame中开发一个简单的游戏......一艘火箭飞船飞来飞去并射击东西。


问题:为什么 pygame 在一次按下太多键时会停止发出键盘事件?

关于密钥处理:该程序有许多变量KEYSTATE_FIRE, KEYSTATE_TURNLEFT,例如 等...

  1. 处理事件时KEYDOWN,它将相应的KEYSTATE_*变量设置为 True。
  2. 处理事件时KEYUP,它将相同的变量设置为 False。

问题: 如果UP-ARROWLEFT-ARROW被同时按下,pygame 在按下时不会发出KEYDOWN事件SPACE。此行为因键而异。按下字母时,我似乎可以在 pygame 停止KEYDOWN为其他键发出事件之前按住其中的 5 个。

验证:在我的主循环中,我只是打印了收到的每个事件来验证上述行为。

代码:作为参考,这里是此时处理关键事件的(粗略)方式:

按此顺序:

  • a (down)
  • s (down)
  • d (down)
  • f (down)
  • g (down)
  • h (down)
  • j (down)
  • k (down)
  • a (up)
  • s (up)
  • d (up)
  • f (up)
  • g (up)
  • h (up)
  • j (up)
  • k (up)

这是输出:

  • <Event(2-KeyDown {'scancode': 30, 'key': 97, 'unicode': u'a', 'mod': 0})>
  • <Event(2-KeyDown {'scancode': 31, 'key': 115, 'unicode': u's', 'mod': 0})>
  • <Event(2-KeyDown {'scancode': 32, 'key': 100, 'unicode': u'd', 'mod': 0})>
  • <Event(2-KeyDown {'scancode': 33, 'key': 102, 'unicode': u'f', 'mod': 0})>
  • <Event(3-KeyUp {'scancode': 30, 'key': 97, 'mod': 0})>
  • <Event(3-KeyUp {'scancode': 31, 'key': 115, 'mod': 0})>
  • <Event(3-KeyUp {'scancode': 32, 'key': 100, 'mod': 0})>
  • <Event(3-KeyUp {'scancode': 33, 'key': 102, 'mod': 0})>
  • <Event(2-KeyDown {'scancode': 36, 'key': 106, 'unicode': u'j', 'mod': 0})>
  • <Event(2-KeyDown {'scancode': 37, 'key': 107, 'unicode': u'k', 'mod': 0})>
  • <Event(3-KeyUp {'scancode': 36, 'key': 106, 'mod': 0})>
  • <Event(3-KeyUp {'scancode': 37, 'key': 107, 'mod': 0})>

这是一个常见问题吗?有解决方法吗?如果不是,那么在使用 pygame 时处理多键控制问题的最佳方法是什么?

0 投票
2 回答
510 浏览

python - pygame 函数似乎被忽略了

我正在构建一个相对简单的程序来测试碰撞检测,目前一切正常,除了一件事,我试图让背景颜色随机变化,唯一的问题是它似乎完全跳过了该功能做这个;

这是ColourCheck被忽略的功能,有什么想法吗?

0 投票
5 回答
22981 浏览

python - 如何使用 Python 和 pygame 创建 MS Paint 克隆

如我所见,有两种方法可以处理鼠标事件来绘制图片。

第一个是检测鼠标何时移动并画一条线到鼠标所在的位置,如图所示。但是,这样做的问题是,对于较大的画笔大小,每条不直的“线”之间会出现许多间隙,因为它使用线条的笔触大小来创建粗线。

另一种方法是在鼠标移动时绘制圆圈,如图所示。这样做的问题是,如果鼠标移动的速度快于计算机检测到鼠标输入的速度,每个圆圈之间就会出现间隙。

这是我的两个问题的屏幕截图:

http://imgur.com/32DXN.jpg

实现像 MS Paint 这样的画笔的最佳方法是什么,画笔大小相当大,线条的笔划没有间隙或每个圆圈之间没有间隙?

0 投票
2 回答
7526 浏览

pygame - pygame 中的混合模式是什么意思?

Surface.blit在 1.8 中有一个新参数:blend。定义了以下值:

  • BLEND_ADD
  • BLEND_SUB
  • BLEND_MULT
  • BLEND_MIN
  • BLEND_MAX
  • BLEND_RGBA_ADD
  • BLEND_RGBA_SUB
  • BLEND_RGBA_MULT
  • BLEND_RGBA_MIN
  • BLEND_RGBA_MAX
  • BLEND_RGB_ADD
  • BLEND_RGB_SUB
  • BLEND_RGB_MULT
  • BLEND_RGB_MIN
  • BLEND_RGB_MAX

有人可以解释这些模式的含义吗?

0 投票
6 回答
5004 浏览

python - 用于简单纸牌游戏的 wxPython 或 pygame?

我一直在玩用 Python 编写一些简单的纸牌游戏以获得乐趣,我想为游戏添加一个图形用户界面 (GUI)。你会推荐哪个库来为一个简单的纸牌游戏编写 GUI?

0 投票
4 回答
2956 浏览

python - 基于端点的旋转

我正在使用 pygame 在两个任意点之间画一条线。我还想在线的行进方向上朝外的线的末端附加箭头。

在最后粘贴箭头图像很简单,但我不知道如何计算旋转度数以保持箭头指向正确的方向。

0 投票
3 回答
7727 浏览

python - PyGame中的中文unicode字体

PyGame中如何显示汉字?什么是用于此目的的好的免费/自由字体?

0 投票
4 回答
2555 浏览

python - 拦截类中类中属性的变化 - Python

我一直在搞乱 pygame 和 python,我希望能够在我的类的属性发生变化时调用一个函数。我目前的解决方案是:

这很好用,当我用 更改 rect 值时会调用 dofancystuff Firsclass.rect = pygame.rect.Rect(0,0,100,100)。但是,如果我说Firstclass.rect.bottom = 3. __setattr__并没有调用 dofancystuff。

所以我想我的问题是如何拦截对子类属性的任何更改?

编辑:另外,如果我以错误的方式解决这个问题,请告诉我在 python 方面我不是很了解。