问题标签 [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 回答
564 浏览

python - Pygame和线程:访问全局变量时被锁定?

我正在使用 pygame 编写游戏。我打算使用 OpenSoundControl (OSC) 来控制其中一个角色,这是一种基于 udp 的实时通信协议。基本上我正在使用simpleOSC模块将一些 OSC 命令绑定到我的 pygame 程序上的功能。

我的游戏结构是这样的(这是一个简化,所以你明白了):

Game 是一个简单的类,它执行 pygame.init() 并绘制并完成与 pygame 相关的几乎所有事情。

执行代码时遇到的问题是,当我发送一个 osc 数据包时,我得到“它可以工作”但不是“不工作”,然后没有处理后续的 osc 数据包。

由于 simpleOSC 使用线程,我对此行为的唯一解释是 pygame 使用了某种不兼容的线程(?),并且当尝试访问位于 pygame 线程中的变量时,它会锁定。

关于原因和(如果可能)解决方案的任何想法?

0 投票
4 回答
10294 浏览

python - Pygame 从位图设置鼠标光标

我正在使用 pygame 制作图像编辑器,我想知道是否可以将鼠标光标更改为更适合画笔的东西(例如圆形或矩形)。Pygame 有一种非常奇怪的方法,我不确定它是否能很好地工作。有没有办法可以写入位图然后使用它?

如果有一种方法可以用 Python 来做,我想那也可以。

0 投票
3 回答
1520 浏览

python - 通过连接节点寻找最长的非重复路径

我已经为此工作了几天,但没有成功。基本上,我有一堆节点排列在一个二维矩阵中。每个节点都有四个邻居,除了矩阵边和角上的节点,它们分别有 3 个和 2 个邻居。想象一堆方形卡片并排放置在一个矩形区域中——该项目实际上是在模拟一种纸牌/棋盘游戏。

每个节点可能连接也可能不连接到它周围的节点。每个节点都有一个函数 (get_connections()),它返回它所连接的紧邻它的节点(因此返回 0 到 4 个节点之间的任何地方)。每个节点还有一个“索引”属性,包含它在棋盘矩阵上的位置(例如,'1, 4' -> 第 1 行,第 4 列)。我想做的是在给定特定“开始”节点的情况下找到连接节点的最长非重复路径。

我已经上传了几张图片,应该可以很好地了解我正在尝试做的事情:

www.necessarygames.com/junk/10-days-problem-01.jpg
(来源:必要游戏.com

www.necessarygames.com/junk/10-days-problem-02.jpg
(来源:必要游戏.com

在这两个图像中,突出显示的红牌应该是包含最左上角的牌的最长路径。但是,您可以在两张图片中看到应该在路径中的几张卡片被遗漏了(第一张图片中的罗马尼亚和马尔多瓦,第二张图片中的希腊和土耳其)

在给定起始节点/卡的情况下,这是我目前用来查找最长路径的递归函数:

这里的问题与 processes_countries 列表有关:如果您查看我的第一个屏幕截图,您会看到发生的情况是,当乌克兰出现时,它查看了最长路径的两种可能选择(马尔多瓦-罗马尼亚,或土耳其,保加利亚),看到他们都是平等的,并不加选择地选择了一个。现在,当匈牙利出现时,它无法尝试通过罗马尼亚(实际上最长的路径),因为罗马尼亚已被乌克兰添加到 processes_countries 列表中。

非常感谢您对此的任何帮助。如果你能找到我的解决方案,递归与否,我很乐意向你捐赠一些 $$。

我已将完整的源代码(需要 Python 2.6、Pygame 1.9)上传到:

http://www.necessarygames.com/junk/planes_trains.zip

相关代码在 src/main.py 中,全部设置为运行。

0 投票
1 回答
729 浏览

python - wxPython & pyGame 作业

我实际上需要你的帮助和建议来解决我正在处理的任务。首先,我的任务是编写一个运行 langton 的蚂蚁模拟的程序。为此,我设法获得了源代码(来自 snippets.dzone.com/posts/show/5143)并根据我的要求进行了相应的编辑。这是在 pygame 模块扩展中完成并运行的。此外,我的任务需要一个 GUI 界面,以便用户在运行 langton 的 ant 程序的情况下有效地运行和导航屏幕。我在名为 BOA 构造函数的 IDE 的帮助下使用 wxPython 来创建框架、按钮、文本框等。基本上,界面中需要的所有东西。

但是,我遇到了下面列出的一些问题:

  • 发现将 pyGame 与 wxPython 集成的问题。

    在此说明中,我在互联网上研究了答案和教程,我从以下网站找到了答案和教程:wiki.wxpython.org/IntegratingPyGame & aspn.activestate.com/ASPN/Mail/Message/wxpython-users/3178042。我从网站了解到,将 pyGame 与 wxPython 集成将是一项艰巨的任务,它会导致常见问题,例如无法将其他控件放入框架中,因为 pyGame 应用程序将覆盖整个面板。我真的希望您能澄清我对此的疑问,并就我应该从这里走的道路向我提出建议。因此,我提出以下问题:

  • 将pyGame与wxPython集成是否可行?

  • 如果将 pyGame 与 wxPython 集成是不可行的,我还有什么其他的选择来创建一个将 pyGame 集成到其中的 GUI 界面。如果是这样,我该怎么办?
  • 如果可以将 pyGame 与 wxPython 集成,我该怎么做呢?

这个真的很需要大家的意见。

0 投票
1 回答
788 浏览

python - 可以将 Python 与 Intel 的 Atom Developer SDK (C/C++) 一起使用吗?

所以我用 Python 和 PyGame 制作了一个游戏。现在我有兴趣将游戏提交给英特尔的三月开发者挑战赛。然而,开发者挑战需要使用英特尔的 Atom 开发者 SDK ( http://appdeveloper.intel.com/en-us/sdk ),它只有用于 C 和 C++ 的 API。

我是 Python 和 PyGame 的新手,没有 C 或 C++ 方面的经验。我的问题是,是否有可能通过/使用/从 Python 应用程序以某种方式实现英特尔的 Atom SDK(如上面的第一个链接所示)?

我已经阅读了一些关于在 C 中嵌入/扩展 Python 的内容,但我不完全确定要嵌入什么或在哪里嵌入。我的意思是,我知道我可以在 C 中做这样的事情:

但是对于那些没有在他们的机器上安装这些依赖的人,我该如何处理我对 Python 和 Pygame 的所有依赖呢?通常 Py2Exe 负责压缩所需的依赖项(我已经设法将我的游戏打包成一个 exe/zip),但是在嵌入 C 的上下文中我如何处理这些东西呢?我可以以某种方式与 py2exe 一起工作,还是我需要做一些完全不同的事情才能嵌入到 C 中?

似乎用 C 验证代码扩展 Python 的路线要容易得多,而不是试图将我的整个游戏嵌入到 C 中,但我认为这不是一个选择,“因为提供的库目前仅可用作为 Visual Studio 2008 '.lib'",这意味着应用程序必须使用 Visual Studio 编译...?

非常感谢任何帮助、想法或想法!



您可以在上面的英特尔网站上找到完整的 SDK 开发人员指南,但这里是他们使用 C 语言 API 的“Hello World”:

35页SDK开发者指南:http://appdeveloper.intel.com/sites/files/pages/SDK%20Developer%20Guide.pdf

0 投票
2 回答
17428 浏览

python - 如何在 Python + Pygame 中提高帧速率(fps)?

我正在开发一款小型换卡世界旅行游戏,我将其设想为介于宝石迷阵和 10 天地理棋盘游戏之间的交叉游戏。到目前为止,编码一切正常,但帧速率很差……目前我的 Core 2 Duo 的帧率很低 20。这是一个问题,因为我正在为英特尔 3 月份的开发者竞赛创建游戏,该竞赛的目标是搭载动力不足的 Atom 处理器的上网本。

这是游戏的画面

替代文字
(来源:必要游戏.com

我对 Python 和 Pygame 非常陌生(这是我使用它们的第一件事),遗憾的是缺乏正式的 CS 培训……也就是说,我认为可能有很多不好的做法正在发生在我的代码中,还有很多可以优化的地方。如果你们中的一些较老的 Python 手不介意看看我的代码,看看是否找不到任何明显的优化区域,我将非常感激。

您可以在此处下载完整的源代码(Python 2.6 + Pygame 1.9): http: //www.necessarygames.com/my_games/betraveled/betraveled_src0328.zip

此处编译的 exe:www.necessarygames.com/my_games/betraveled/betraveled_src0328.zip

我担心的一件事是我的事件管理器,我觉得其中可能包含一些性能整体,另一件事是我的渲染......我几乎只是一直将所有内容都放在屏幕上(参见渲染例程在我下面的 game_components.py 中);我最近发现您应该只更新已更改的屏幕区域,但我仍然对这到底是如何完成的......这可能是一个巨大的性能问题吗?

任何想法都非常感谢!像往常一样,我很高兴通过 PayPal 向您“提示”您的时间和精力。

Jordan



编辑: 感谢下面的建议,我在我的代码上运行了 cprofile。如果有人愿意查看此输出并让我知道什么是预期的,什么是预期的,那就太好了。



这是p.strip_dirs().sort_stats('cumulative').print_stats()的输出:

这是p.strip_dirs().sort_stats('time').print_stats()的输出:





以下是一些来源:

主文件

事件管理器.py

房间.py

0 投票
4 回答
304 浏览

pygame - Pygame字体不一致

我正在与其他一些开发人员一起在 python+pygame 中开发一个程序,我们看到相同的字体呈现不同的效果。这是我们随游戏分发的免费字体。在我的机器上,这种特殊字体的渲染比在其他开发人员的机器上低 10 像素。

关于为什么会这样的任何想法?

0 投票
3 回答
335 浏览

python - python游戏中房间/屏幕/菜单控制器的问题:旧房间没有从内存中删除

我真的是在用头撞墙(就像,是的,在身体上,在我目前的位置,我正在损坏我的头盖骨)。基本上,我有一个带有一些典型游戏“房间”或“屏幕”的 Python/Pygame 游戏。EG 标题画面、高分画面和实际游戏室。当我在房间之间切换时发生了一些不好的事情:旧房间(及其各种项目)没有从内存或我的事件侦听器中删除。不仅如此,每次我回到某个房间时,我的事件侦听器数量都会增加,同时消耗的 RAM 也会增加!(例如,如果我在标题屏幕和“游戏室”之间来回切换,事件监听器的数量和内存使用量就会不断增加。

主要问题是所有事件侦听器开始累加并真正耗尽 CPU。我是 Python 新手,不知道我是否在这里做一些明显错误的事情,或者什么。

如果你能帮助我,我会非常爱你!

下面是相关的源代码。完整的源代码位于http://www.necessarygames.com/my_games/betraveled/betraveled_src0328.zip (需要 Python 2.6 + Pygame 1.9)

主文件



事件管理器.PY



使用事件管理器的示例类

0 投票
1 回答
994 浏览

python - 无法在 Mac 上将 pygame 导入 Netbeans

我正在运行 python 2.6.5 和 pygame 1.9.1 在我看来,我已经尝试了一切,但它一直显示“找不到模块”错误......请帮忙!

0 投票
1 回答
188 浏览

python - PGU Tiles 碰撞检测

我使用 PGU(Phil's Pygame Utilities)已经有一段时间了。它有一个名为 tdata 的字典,它在加载图块时作为参数传递

tdata = { tileno:(agroup, hit_handler, config)}

我正在制作一个 pacman 克隆,其中有 2 个组:玩家和幽灵,我想用相同类型的瓷砖进行碰撞检测。

例如,如果 tile no 是 2,我希望这个 tile 有一个组作为玩家和幽灵。我尝试执行以下操作:

tdata = {0x02 :('player', tile_hit_1, config), 0x02 : ('ghost', tile_hit_2, config)}

然而,在这样做时,它只为幽灵而不是玩家提供碰撞检测。

关于如何使用相同类型的瓷砖为玩家和幽灵进行碰撞检测的任何想法?