Pygame没有回应

时间:2017-07-21 02:46:05

标签: python user-interface pygame

我正在学习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

1 个答案:

答案 0 :(得分:2)

窗口没有冻结,只是在您设置的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 !