2016-11-24 59 views
1

我試圖用一個類來隨時間推移進行圖像旋轉它已被創建之後,但我不斷收到一個錯誤:Pygame的旋轉圖像隨着時間的推移

"pygame.error: Width or height is too large".

game_display=pygame.display.set_mode((display_width,display_height)) 
    display_rect=game_display.get_rect() 
    forest_img=pygame.image.load("forest.jpg") 
    game_display.blit(forest_img,(0,0) 
    kunai=pygame.image.load("Kunai.png") 
    kunai=pygame.transform.scale(kunai, (13,55)) 
    kunai_rect=kunai.get_rect(center=display_rect.center) 
    angle = 0 
    done = False 

    global done 
    global kunai 
    global angle 
    global kunai_rect 

    class Knife(): 
     def __init__(self, vx): 
      self.x=display_width//2+30 
      self.y=int(ground+65) 
      self.vx=vx 
     def update(self): 
      self.x+=self.vx 

     def draw(self): 
      global done 
      global kunai 
      global angle 
      global kunai_rect 

      while not done: 
       kunai=pygame.transform.rotate(kunai, angle) 
       kunai_rect=kunai.get_rect(center=kunai_rect.center) 
       game_display.blit(kunai, kunai_rect) 
       clock.tick(60) 
       angle+=1 

    knifes=[] 
    while True: 
     for event in pygame.event.get(): 
      if event.type==pygame.KEYDOWN: 
       if event.key == pygame.K_SPACE: 
        knifes.append(Knife(20)) 
     for knife in knifes: 
      knife.draw() 
      knife.update() 

有人能幫助我嗎?謝謝。

+0

始終添加有問題的完整錯誤消息(追溯)。還有其他有用的信息 - 即。哪一行出問題。然後(有時)我們可以解決問題而不需要運行代碼。 – furas

回答

0

你旋轉的表面,kunai是一個全局變量。當它被旋轉時,它將被再次存儲到相同的變量中:

kunai=pygame.transform.rotate(kunai, angle) 

每次旋轉曲面時它都會變大。你可以想象旋轉一個矩形,並且如果你想將旋轉的矩形存儲在一個未旋轉的矩形中,你在大多數情況下必須使未旋轉的矩形變大。

所以會發生的是,kunai矩形變得越來越大,每次迭代。你可以嘗試打印出尺寸來看這個。

您應該旋轉原始圖像。

相關問題