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