2013-10-11 189 views
5

我是pygame的新手,想要編寫一些代碼,每10秒只將圖像旋轉90度。我的代碼看起來是這樣的:使用pygame旋轉圖像

import pygame 
    import time 
    from pygame.locals import * 
    pygame.init() 
    display_surf = pygame.display.set_mode((1200, 1200)) 
    image_surf = pygame.image.load("/home/tempuser/Pictures/desktop.png").convert() 
    imagerect = image_surf.get_rect() 
    display_surf.blit(image_surf,(640, 480)) 
    pygame.display.flip() 
    start = time.time() 
    new = time.time() 
    while True: 
     end = time.time() 
     if end - start > 30: 
      break 
     elif end - new > 10: 
      print "rotating" 
      new = time.time() 
      pygame.transform.rotate(image_surf,90) 
      pygame.display.flip() 

此代碼不工作即,圖像不旋轉時,雖然「旋轉」正在打印在每10秒的終端。有人可以告訴我我做錯了什麼嗎?

回答

7

pygame.transform.rotate將不會旋轉Surface到位,而是返回一個新的旋轉的Surface。即使它會改變現有的Surface,您也必須再次將其粘貼在顯示屏上。

你應該做的是跟蹤變量中的角度,每10秒增加一個90,並將新的Surface閃爍到屏幕上,例如,

angle = 0 
... 
while True: 
    ... 
    elif end - new > 10: 
     ... 
     # increase angle 
     angle += 90 
     # ensure angle does not increase indefinitely 
     angle %= 360 
     # create a new, rotated Surface 
     surf = pygame.transform.rotate(image_surf, angle) 
     # and blit it to the screen 
     display_surf.blit(surf, (640, 480)) 
     ...