2017-03-22 6 views
-1

私はpygameを使ってPythonで簡単な2dゲームを作成しようとしています。このゲームは外国人の侵略の残り人で、スクリーンの一番下に達する前に宇宙人を撃ちます。ゲームがコンパイルされ、実行されますが、私が持っている問題は、弾丸に関してです。彼らは画面を横切っていません。この問題は、エイリアンを動かすためのコードを追加した後に始まりました。私は弾丸の速度を調整しようとしましたが、うまくいかなかったのです。以下は、私が使用しているすべてのモジュールを使った私の要点へのリンクです。どのように私が弾丸を動かすことができるかに関する任意のアイデア?私のpygameプログラムで弾丸が動かないのはなぜですか?

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

+5

デバッグのヘルプを求める質問(「なぜこのコードは機能しませんか?」)には、目的の動作、特定の問題またはエラー、およびそれを再現するために必要な**最短のコード**が含まれている必要があります。 。 [ヘルプ/トピック] – 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 bulletsfor bullet in bullets.copy()を変更することをお勧めします。それはコピーメソッドは何も変更されません!変更前と変更後にprint(bullets)を追加すると信じられない場合は、この文脈では.copy()はちょうど時間とメモリの浪費であり、コーディング形式が悪いことがわかります。

+0

を参照してくださいありがとうクレイモア、それをした! –

関連する問題