玩游戏真的

2024-05-08 15:13:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pygame程序。我有许多不同的部分,其中两个如下所示。在第二种情况下,游戏以正常的速度进行,但在第一种情况下,它非常滞后,尽管它有相同的滴答速度。我有什么遗漏吗?顺便说一句,每个游戏循环周期只执行其中一个。注意,以#结尾的行在这两者之间是重复的。在

for event in pygame.event.get():#
    if event.type==pygame.QUIT:#
        pygame.quit()#
        sys.exit()#
    if event.type==pygame.KEYDOWN:#
        if event.key==pygame.K_ESCAPE:#
            pygame.quit()#
            sys.exit()#
for ball in balls:#
    ball.update(winrect, walls)#
window.fill(WHITE)#
for box in boxes:#
    pygame.draw.rect(window, box[1], box[0])#
for wall in walls:#
    if wall.orientation==0:#
        pygame.draw.rect(window, BLACK, (wall.left, wall.top, wall.ttopleft, wall.height))#
        pygame.draw.rect(window, BLACK, (wall.bbottomright, wall.top, wall.right-wall.bbottomright, wall.height))#
    else:#
        pygame.draw.rect(window, BLACK, (wall.left, wall.top, wall.width, wall.ttopleft))#
        pygame.draw.rect(window, BLACK, (wall.left, wall.bbottomright, wall.width, wall.bottom-wall.holesize))#
for ball in balls:#
    pygame.draw.circle(window, ball.color, ball.center, round(ball.width/2))#
    pygame.draw.circle(window, BLACK, ball.center, round(ball.width/2), 2)#
window.blit(coverso, winrect)
window.blit(texts['complete'][0], texts['complete'][1])
window.blit(stuff[0], stuff[1])
pygame.display.update()#
pygame.time.Clock().tick(100)#

第二个是:

^{pr2}$

Tags: inrectboxeventforiftopwindow
2条回答

第一部分中唯一不重复的行是:

window.blit(coverso, winrect)
window.blit(texts['complete'][0], texts['complete'][1])
window.blit(stuff[0], stuff[1])

如果您不使用alpha,建议您使用曲面.转换()创建曲面时。在

如果你使用alpha如果可以使用颜色键,因为它们比alpha曲面快得多。在

为了加快计算速度,我建议使用Psyco。在

http://www.psyco.sourceforge.net/

除了alexpinho98所说的,你不必在alpha曲面上使用色键。你可以用surface.convert_alpha()而不是。在

使用以下代码可以节省一些时间,并且不必重复键入.convert_alpha():

def loadify(imgname):
    return pygame.image.load(imagename).convert_alpha()

相关问题 更多 >