2014-09-29 51 views
0

好的,所以我正在製作一個小遊戲,在點擊鼠標的同時一個斧頭旋轉到側面和背面,並且在發生這種情況時,點也會在計數器中出現。當玩家達到20次點擊時,鼠標後面的圖像應該改變並繼續跟隨鼠標(並且它非常漂亮!)但是,我的問題是,當鼠標點擊時,它會停止旋轉,但計數器和其他一切工作正常。我錯過或做錯了什麼?pygame圖像切換到下一個圖像,但不遵循舊的屬性?

因此,這是這是我迄今爲止(僞):

counter = 0 
img = pygame.image.load('C:/Users/Myname/Desktop/art/shadedaxe.bmp')#loads img 
img = pygame.transform.scale(img,(150,140))#scales 

img3 = pygame.image.load('C:/Users/Myname/Desktop/art/shadedaxe2.bmp') 
img3 = pygame.transform.scale(img3,(150,140))#scales 

while running: 
    mx,my = pygame.mouse.get_pos() 
    imgx=mx-50 #sets img at 
    imgy=my-70 
    screen.blit(img, (imgx,imgy)) 

    for event in pygame.event.get(): 
     if event.type == MOUSEBUTTONDOWN: 
      if event.button != 4 and event.button != 5 and event.button != 3: 
       img = pygame.transform.rotate(img, -90) #make it turn on click 
       counter += 1 #Gives points to the player 

     elif event.type == MOUSEBUTTONUP: 
      if event.button != 5 and event.button !=4 and event.button != 3: 
       img = pygame.transform.rotate(img, 90) 

     if counter > 20: 
      img = img3 

PS:我剛開始在Python編碼即pygame的,並只被編碼幾個月,所以我不如果您有任何關於代碼組織的提示,請全面瞭解我在做什麼,他們將不勝感激!謝謝!

回答

1

的問題是下面幾行:

if counter > 20: 
    img = img3 

由於計數器僅增加,分配到每個事件上執行。由於img3未旋轉,因此不會看到以下行結果,因爲img又被指定爲img3

img = pygame.transform.rotate(img, -90) 

要解決這個問題,你應該有一個額外的變量,告訴你,如果shadeaxe已被「升級」。然後測試counter > 20axeUpgraded == False