首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pygame中判断窗口是否正在被拖动

问如何在pygame中判断窗口是否正在被拖动
EN

Stack Overflow用户
提问于 2014-01-14 17:39:43
回答 1查看 444关注 0票数 0

我正在用pygame写一个游戏。如果我在玩游戏的时候用鼠标拖动窗口,游戏看起来会暂停,但是当我们松开鼠标点击的时候,敌人已经越过了所有的墙,正在愉快地走向远方。

我推测这是因为循环继续更新精灵的位置,但由于某种原因没有检测到墙和敌人之间的碰撞。

无论如何,我决定让pygame告诉我窗口是否被拖动了。然后我想去暂停比赛吧。

有没有可以做到这一点的函数?否则我该怎么做呢?

如果这个问题没有解决,我显然可以让全屏一直使用,但我更喜欢解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2014-06-18 06:01:58

这是一个有点晚的答案,但我希望它仍然对任何人有用。如果你在pygame中打印你的程序的FPS,你会注意到当你拖动一个窗口时,它们会下降很多,或者这样说:你的增量时间将会非常高。

我的主循环现在每次都会返回,当增量时间大于某个特定值时。

代码语言:javascript
复制
class MainProgram(object):
    def __init__(self, many_variables):
        # Much code here

        self.clock = pygame.time.Clock()
        self.dt = self.clock.tick(60) / 1000

    def mainloop(self):
        while self.running == True:
            self.dt = self.clock.tick(60) / 1000
            if self.dt >= 0.05
                return
            # Rest of the program is only executed, if delta-time is below 0.05 sec

我的FPS限制在60。同时,我以秒为单位计算DT (pygame使用毫秒!)。如果它提出了太高的resp。FPS降得太低(高于0.05s = 20FPS),我不再执行主代码。

您可以根据需要调整这些值。我计算出,对于游戏来说,0.05的限制是最好的,因为程序应该仍然可以在不能达到帧率的旧机器上执行(例如,在25FPS时,DT已经是0.04s!)。

如果这对您有任何用处,请告诉我:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21110149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档