2017-03-22 25 views
-1

我想在python中使用pygame創建一個簡單的2d遊戲。這場比賽是外星人入侵的殘餘部分,在外星人到達屏幕底部之前,他們會射擊外星人。遊戲編譯和運行,但我遇到的問題是關於子彈。他們沒有穿過屏幕。在我添加代碼以使外星人移動之後,問題就開始了。我試圖調整子彈的速度,但沒有奏效。以下是我使用的所有模塊的要點鏈接。關於如何讓子彈移動的任何想法?爲什麼我的子彈不能在我的pygame程序中旅行?

https://gist.github.com/dewest91/1d5d5ee538a4f68bfacc84c4081c24f8

+5

尋求調試幫助的問題(「爲什麼不是這個代碼工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現**的**最短**代碼** 。查看[help/on-topic] – khelwood

回答

1

這是因爲你從來沒有真正調用Bullet對象的update方法。

我懷疑你想在update_bullets函數中做到這一點,所以這裏是修復。

def update_bullets(aliens, bullets): 
    """Update position of bullets and get rid of old bullets.""" 
    #Check for any bullets that have hit aliens. 
    #If so, get rid of the bullet and the alien. 
    collisions = pygame.sprite.groupcollide(bullets, aliens, False, True) 


    #Get rid of bullets that have disappeared. 
    for bullet in bullets.copy(): 
     bullet.update() 
     if bullet.rect.bottom <= 0: 
      bullets.remove(bullet) 

    print(len(bullets)) 

我將建議改變for bullet in bullets.copy()for bullet in bullets。因爲它的複製方法不會改變任何東西!如果您不相信我在更改前後添加print(bullets):您會發現在這種情況下.copy()只是浪費時間,內存並且是錯誤的編碼形式。

+0

感謝Claymore,它做到了! –

相關問題