当前位置: 首页 > 知识库问答 >
问题:

pygame仅在鼠标在游戏窗口上活动时更新?

赫连越
2023-03-14

刚刚开始使用pyplay(python 2.7,win7,i3),并在这里查看教程:http://www.pygame.org/docs/tut/intro/intro.html

当我运行代码示例时:

import sys, pygame
pygame.init()

size = width, height = 320, 240
speed = [2, 2]
black = 0, 0, 0

screen = pygame.display.set_mode(size)

ball = pygame.image.load('ball.bmp')
ballrect = ball.get_rect()

while 1:
    for event in pygame.event.get():
        if event.type == pygame.QUIT: sys.exit()

        ballrect = ballrect.move(speed)
        if ballrect.left < 0 or ballrect.right > width:
            speed[0] = -speed[0]
        if ballrect.top < 0 or ballrect.bottom > height:
            speed[1] = -speed[1]

        screen.fill(black)
        screen.blit(ball, ballrect)
        pygame.display.flip()

...从空闲或powershell,只有当鼠标在游戏窗口上移动时,游戏窗口才会更新。我原以为球只会自己弹来弹去。这种鼠标位置相关的性能是不是因为pygame/SDL处理图形模式的方式?它与硬件有关吗?有没有办法通过代码来提高性能?我想让pygame成为大家熟知的游戏,这似乎。。。古怪的非常感谢。

编辑:

while 1:
    for event in pygame.event.get():
        if event.type == pygame.QUIT: sys.exit()

    ballrect = ballrect.move(speed)
    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = -speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = -speed[1]

    screen.fill(black)
    screen.blit(ball, ballrect)
    pygame.display.flip()

共有1个答案

王炜
2023-03-14

您在函数中有更新代码!像这样把它搬出去,它就会起作用。

while 1:
    for event in pygame.event.get():
        if event.type == pygame.QUIT: sys.exit()

        ballrect = ballrect.move(speed)
        if ballrect.left < 0 or ballrect.right > width:
            speed[0] = -speed[0]
        if ballrect.top < 0 or ballrect.bottom > height:
            speed[1] = -speed[1]

    screen.fill(black)
    screen.blit(ball, ballrect)
    pygame.display.flip()
 类似资料:
  • 我是pygame的新手,我需要一些帮助,因为我的代码工作不正常。 好的,问题是:我希望屏幕在运行时变为白色,但它仍然是黑色的,但是当我按下退出按钮时,它会变为白色大约一秒钟,然后关闭。 当我放一张图片(像player.png)时,也会发生这种情况,它会在退出前出现大约一秒钟。我不知道我做错了什么, 请帮助修复代码并解释为什么会发生这种情况? 代码如下: 另外,我没有发现任何错误

  • 我在pygame中运行一个游戏,发现了一个漏洞。按照我的编码方式,如果鼠标出了窗口,游戏开始循环。当你得到,它将返回上次在窗口中检测到鼠标的值,但从其他方面看,没有鼠标离开窗口的指示。那么,有没有办法检查鼠标是否已经停止在pygame窗口上悬停,并离开了它?

  • 我一直在尝试使用pygame来显示游戏场景,但它似乎已经停止了对我的工作:在pygame关闭之前,它只在我创建的任何屏幕上显示一个灰色框,然后屏幕上应该显示的内容在退出之前短暂闪烁。例如,下面的最小代码显示灰色屏幕5秒钟,然后快速闪烁黑色并退出: 这似乎是屏幕显示的问题,而不是pygame本身的问题,因为我可以使用pg.image制作曲面并将其保存到图像文件中。save(),它们在那里看起来很好。

  • 好的,我正在使用Pygame,我创建了一个代码来跟踪Pygame显示屏上的鼠标。然而,当我在Pygame one上打开另一个窗口时,它停止跟踪鼠标位置。我想知道,即使我的Pygame窗口不是活动窗口,有没有办法继续跟踪鼠标?

  • 卡洛斯·巴罗斯 编辑:也许我应该这么说,但这个游戏是一个类似反击或英雄联盟的游戏,我没有做这个游戏。

  • 我想用回溯模拟n皇后问题。我每次调用这个drawboard()函数时都使用一个列表作为参数,如下所示 所以每次它都显示在单独的窗口中。下一个窗口只有在遮盖第一个窗口后才显示,以此类推... 我如何在一个窗口中制作这些东西,或者如何在特定的时间间隔后自动关闭这些窗口,以便这些窗口一个接一个地显示 我绘制棋盘的函数如下