2011-11-16 1 views
2

Je suis nouveau à pygame et python lui-même. Mais maintenant, je dois faire un fileur. Cela devrait s'arrêter à des moments aléatoires. Ce que je pensais était que je peux avoir random.randint (0, 360). Donc je peux le faire arrêter au hasard. Mais maintenant, je ne peux que le faire pivoter 90, ou bien il se déplace de l'écran.Python pygame.transform.rotate

Toute aide serait utile.

Merci

import sys, pygame, time 

pygame.init() 

screen = pygame.display.set_mode([600,600]) 
black = 255,255,0 
ball = pygame.image.load("wheel.gif") 
temp = pygame.image.load("wheel.gif") 


ballrec = ball.get_rect().center 

while 1: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      sys.exit() 
    screen.fill(black) 
    ball = pygame.transform.rotate(ball, 45) 
    ballrec = ball.get_rect().center 
    screen.blit(ball, ballrec) 
    pygame.display.flip() 
    time.sleep(1) 

Répondre

0

Comme il est indiqué here, en rotation par des angles qui ne sont pas divisibles par 90 nécessite que l'image étant rembourré. Vous devriez être capable de juste blitter l'image pour toujours être centré à 128,128 ou vous pouvez couper les bords de l'image si nécessaire.

1

J'ai remarqué que si vous continuez à faire pivoter l'objet pivoté à plusieurs reprises, comme vous le faites dans ball = pygame.transform.rotate(ball, 45), l'image-objet est déformée et commence à se déplacer hors de l'écran. Je garde généralement l'image originale et je reviens à celle-ci lorsque je fais une rotation de 360 ​​degrés.