を解決しました。助けをいただきありがとうございますが、問題はリストが上書きされてスプライトグループに変換され、すべてのリスト操作が役に立たなくなっているようです。リストから参照されていないオブジェクトを削除する
私は最近Pythonでプログラミングを始めました(常にアラーム音を鳴らしています)ので、コード化された方法がやや怖いのであれば謝ります。この特定のプログラムはパイゲーム(「エンジン」が使用されています)をインポートします。
オブジェクト/スプライトを含むリストを作成しようとしています。これは私が達成したようですが、オブジェクトが特定のポインタを持っていない限り、このリストからオブジェクトを削除しても問題がなくなりました。
スプライトクラスは次のように構成されます。
class Point(pygame.sprite.Sprite):
def __init__(self,pos=(0,0)):
pygame.sprite.Sprite.__init__(self)
#Unimportant code
self.dead=False
print self
#This prints; "<Point sprite(in 0 groups)>"
def update(self):
if(self.dead):
#sprList_PointSet.remove(?)
pass
オブジェクトとリストが作成されます。
sprList_PointSet=[]
sprList_PointSet+=[Point((50,90))]
sprList_PointSet+=[Point((65,110))]
# ...
print sprList_PointSet
#This prints; [<Point sprite(in 0 groups)>, <Point sprite(in 0 groups)>, ...]
それはもはや明らかなメモリー表示がない場合には.remove(X)を使用して、必要なときに、リストからインスタンスを削除しないための方法はありますか? /または/ではない場合、誰かがそのようなやり方をより良い方法をお勧めすることができます。
'lst.remove(self)'を使うことができますが、クラス内のリストへの参照が必要です。 –
@ NiklasB。 'sprList_PointSet'がグローバル変数であれば、彼はそれを設定しようとしない限り、それをうまく参照することができます。 – agf
@agf:そうでなければ、より良いデザインになるだろう。 –