0

私は小さなスペースインベーダータイプのゲームを作っています。または少なくともしようとしています。ほとんどのことが機能しますが、繰り返し発生するバグがひどいです。ゲームは時々完璧に動作します。ただし、ほぼ1回おきに、いくつかの敵を爆発させた後に終了し、次のエラーが発生します 。Traceback (most recent call last): enemies[count].render()およびpygame.error:display Surface quit。プログラムが正常に機能しているように見えても、2番目のエラーは常にポップアップするようです。

これは私のレンダリング関数です:

def render(self):
    screen.blit(self.bitmap, (self.x, self.y))

必要に応じて、完全なコードを投稿および/またはリンクできます。

4

2 に答える 2

1

私が推測できることから、おそらくすでにガベージコレクションされているサーフェスへの参照を取得しており、pygameはサーフェスをブリットできないときに終了します。

これを修正するには、コードを調べて、オブジェクトがゲームから削除されたときに「敵」リストからオブジェクトを削除していることを確認します。

別の解決策は、PyGameの組み込みのグループクラスを使用することです。削除されたオブジェクトを追跡し、このような問題について心配する必要はありません。

于 2012-04-08T16:50:41.863 に答える
1

これは、特定のセットアップに影響を与えているpygameの問題に似ています。pygameがハードウェアアクセラレーションを使用しているかどうか(pygame.screen.set_modeのドキュメントを確認してください)などを変更して、それらを切り替えてみてください。

于 2012-04-08T13:26:05.453 に答える