2017-07-21 73 views
1

我正在學習pygame,並且我剛剛輸入了幾條基本線來嘗試在我的窗口之間移動一個球,但是在顯示圖像之後,窗口將會凍結。Pygame Not Responding

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 

回答

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 ! 
+1

更好的實例化[時鐘](http://www.pygame.org/ docs/ref/time.html#pygame.time.Clock)'clock = pygame.time.Clock()',然後每幀調用'clock.tick(desired_frame_rate)'來限制幀速率。 'pygame.time.delay'使遊戲無響應。 – skrx

+0

感謝您的幫助。有效。 – Matthew

相關問題