每个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进行控制和自动化任务.来自传感器的信息使用pygame显示,然后记录在别处.
为了限制帧率,我正在使用pygame时钟滴答.
由于这是一个嵌入式应用程序,因此该过程可以一次运行数月.pygame时钟是否会停止工作,即如果它将ms存储为整数(长整数除外)什么时候会耗尽时间并且可以应对回到0(或更糟的减去某些东西)?
如果确实耗尽了多长时间?我似乎记得Win95的第一个版本因为这个原因在4天后崩溃了!
如果这是相关的话,我在Raspberry Pi ver 3上使用Python2.7.
我正在使用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) 我想在 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)
谢谢你的时间。
我正在pygame上练习,我想知道如何才能使帧速率不影响游戏的执行速度
我希望FPS 不被锁定,并且游戏始终以相同的速度运行。
到目前为止,我一直在使用该pygame.time.Clock.tick功能,但角色的速度会根据 FPS 的数量而变化,这是我不想要的。