Girar imagen usando pygame

Soy nuevo en pygame y quiero escribir un código que simplemente gire una imagen 90 grados cada 10 segundos. Mi código se ve así:

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() 

Este código no funciona, es decir, la imagen no gira, aunque se imprime “rotando” en el terminal cada 10 segundos. ¿Alguien puede decirme que estoy haciendo mal?

pygame.transform.rotate no girará la Surface en su lugar, sino que devolverá una nueva Surface girada. Incluso si modificara la Surface existente, tendría que blitearla en la superficie de la pantalla nuevamente.

Lo que debes hacer es hacer un seguimiento del ángulo en una variable, boostlo en 90 cada 10 segundos y mezclar la nueva Surface en la pantalla, por ejemplo

 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)) ...