标签: pygame-clock

游戏主循环中的pygame clock.tick()vs framerate

每个pygame都有一个如下所示的游戏循环:

while running:
    for event in pygame.event.get():        
        if event.type == pygame.QUIT:
            running = False   
    pygame.display.flip()
    print("tick " + str(pygame.time.get_ticks()))
    clock.tick(1)
Run Code Online (Sandbox Code Playgroud)

根据api get_ticks():

返回自调用pygame.init()以来的毫秒数.在pygame初始化之前,这将始终为0.

但是clock.tick():

应该每帧调用一次此方法.它将计算多少.自上一次调用以来已经过了几毫秒.

如果传递可选的帧率参数,该函数将延迟以使游戏运行速度低于每秒给定的滴答数.这可以用于帮助限制游戏的运行时速度.通过每帧调用一次Clock.tick(40),程序将永远不会超过每秒40帧.

我有点困惑,这是否意味着clock.tick()直接影响自游戏开始以来经过了多少毫秒?

所以clock.tick(40)意味着我"发出"每秒40帧,而while循环每秒运行40次?

我没有看到fps和ticks之间的关系.

更新:我实际上只是测试了它,并且get_ticks()仍然以mls返回实际时间,无论你给予什么fps tick() - 0.1或者30或者60.

所以它似乎clock.tick()只是设置了游戏应该运行的速度,以及循环应该自我更新的频率.

不过我还是有点困惑,欢迎其他答案.

python pygame frame-rate pygame-clock pygame-tick

9
推荐指数
2
解决办法
3万
查看次数

Pygame时钟 - 它可以运行多长时间?

我使用Python和pygame进行控制和自动化任务.来自传感器的信息使用pygame显示,然后记录在别处.
为了限制帧率,我正在使用pygame时钟滴答.

由于这是一个嵌入式应用程序,因此该过程可以一次运行数月.pygame时钟是否会停止工作,即如果它将ms存储为整数(长整数除外)什么时候会耗尽时间并且可以应对回到0(或更糟的减去某些东西)?

如果确实耗尽了多长时间?我似乎记得Win95的第一个版本因为这个原因在4天后崩溃了!

如果这是相关的话,我在Raspberry Pi ver 3上使用Python2.7.

python pygame pygame-clock

5
推荐指数
1
解决办法
65
查看次数

为什么添加轮播后我的程序真的变得很滞后,如何解决这个问题?

我正在使用pygame制作游戏,并且有一个小行星类。当我在更新方法中添加旋转并运行程序时,小行星移动得非常缓慢且缓慢,甚至它们的图像也比以前更差。

我不确定该如何解决以及为什么会这样。这是课程:

class enemy(pygame.sprite.Sprite):
def __init__(self, x, y, width, height):
    pygame.sprite.Sprite.__init__(self)
    self.width = width
    self.height = height
    self.speedx = random.randrange(-3,3)
    self.speedy = random.randrange(5,15)
    self.image = random.choice(meteor_image)
    self.rect = self.image.get_rect()
    self.rect.x = x
    self.rect.y = y
    self.rotation = 0
    self.rotation_speed = random.randrange(-8,8)
    self.last_update = pygame.time.get_ticks()

def draw(self,win):
    win.blit(self.image,(self.rect.x,self.rect.y))

def rotate(self):
    time_now = pygame.time.get_ticks()
    if time_now - self.last_update > 50:
        self.last_update = time_now
        self.rotation = (self.rotation + self.rotation_speed) % 360
        new_meteor_image = pygame.transform.rotate(self.image, self.rotation)
        old_center = self.rect.center
        self.image = new_meteor_image
        self.rect = …
Run Code Online (Sandbox Code Playgroud)

python pygame python-2.7 pygame-surface pygame-clock

5
推荐指数
1
解决办法
68
查看次数

在pygame中计算时间

我想在 pygame 中计算事件发生时的时间。我读过文档中的一些内容,但我不太明白如何做到这一点。

在文档中,您可以获得以毫秒为单位的时间,但它在调用 pygame.init() 时开始计数。我想当布尔值为 true 时从 0 开始计数。

import pygame
pygame.init()

loop = True

boolean = False

while loop:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.RETURN:
                boolean = True

     screen.fill((255, 255, 255))

     if boolean:
        # start counting seconds

     pygame.display.update()
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间。

python pygame pygame-clock

4
推荐指数
1
解决办法
1万
查看次数

帧率影响游戏速度

我正在pygame上练习,我想知道如何才能使帧速率不影响游戏的执行速度

我希望FPS 不被锁定,并且游戏始终以相同的速度运行

到目前为止,我一直在使用该pygame.time.Clock.tick功能,但角色的速度会根据 FPS 的数量而变化,这是我不想要的。

python pygame pygame-clock pygame-tick

2
推荐指数
1
解决办法
1162
查看次数