【问题标题】:Pygame Not RespondingPygame 没有响应
【发布时间】:2017-07-21 02:46:04
【问题描述】:

我正在学习 pygame,我刚刚输入了几行基本代码来尝试在我的窗口中移动一个球,但是在显示图像后,窗口就会冻结。

import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
ball = pygame.image.load("ball.png").convert()
ball_rect = ball.get_rect()
white = (255,255,255)


frames = 100


for x in range(frames):
    screen.blit(ball, ball_rect) # display player
    ball_rect.move(2, 2) # move player
    pygame.display.update()
    pygame.time.delay(100)
    screen.fill(white) # erase player

【问题讨论】:

    标签: python user-interface pygame


    【解决方案1】:

    窗口没有冻结,它只是在您设置的 10 秒内刷新相同位置的相同图像。

    这主要是由用于移动图像的方法引起的,您应该使用move_ip 而不是move 作为快速修复(doc)。

    你可以做的另一个改变是用一段时间替换 for 循环,让玩家在他想要的时候退出:

    import pygame
    pygame.init()
    clock = pygame.time.Clock()
    screen = pygame.display.set_mode((640, 480))
    ball = pygame.image.load("ball.png").convert()
    ball_rect = ball.get_rect()
    white = (255,255,255)
    
    
    looping = True
    while looping:
    
        for event in pygame.event.get():
            if(event.type is pygame.QUIT):
                looping = False    
    
        screen.fill(white) # erase player            
    
        screen.blit(ball, ball_rect) # display player
        ball_rect.move_ip(2, 2) # move player
        pygame.display.update()
        clock.tick(10)  # to keep the same FPS, better increase  !
        # Thanks skrx !
    

    【讨论】:

    • 最好实例化一个clockclock = pygame.time.Clock(),然后每帧调用clock.tick(desired_frame_rate)来限制帧率。 pygame.time.delay 使游戏无响应。
    猜你喜欢
    • 2017-05-10
    • 2020-03-06
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多