私は最近pygame.sprite.Spriteとsprite.Groupを(使用して開始している)クラスと私はかつて私のスプライトの問題に遭遇してきました私はもはや新しいクラスインスタンスを初期化することができず、代わりに "TypeError: 'NPC'オブジェクトは呼び出し可能ではありません。ここに私のコード(簡潔さのために削減)です。pygameの中pygame.sprite.Group後pygameのスプライトオブジェクト呼び出すことはできません()
class NPC(pygame.sprite.Sprite):
def __init__(self, start_x, start_y, image):...
npc_pop=pygame.sprite.Group()
locations=[(100,200), (300,300), (150,200)]
def spawn_NPC(x, y):
image_SS = ss.image_at(rando(), colorkey=(255, 0, 128)) #random image from sprite-sheet
new_guy = NPC(x, y, image_SS)
npc_pop.add(new_guy)
for c in locations:
spawn_NPC(c[0],c[1])
while gameLoop == True:
....
npc_pop.draw(screen)
if len(npc_pop) < 2:
spawn_NPC(100,100)
NPCがクラスとして動作し、問題なくスプライトコンテナnpc_popを埋めるゲームループの前に、NPCのクラスについてはあまり詳細に入るなし。しかし、NPCクラスの次のインスタンスは、spawn_NPC()にトレースされる最後の行のエラーを発生させる関数として呼び出されます。どうして?
私はこのスレッドGetting an Error Trying to Create an Object in Pythonを読んで、スプライトのグループ化が何らかの形でクラスを変更することを認識していますが、まだ論理を完全に理解していません。
私たちはあなたのコードを読むことができないので、間違ったインデントがあります。コードを置く前に、すべての行の前に4つのスペースを追加してください。 – furas
は常に完全なエラーメッセージを追加します。メッセージだけでなく、問題を起こしている行などもあります。 – furas
リンクに記載されている問題は、グループとは何の関係もありません。例えば 'print =" Hello World "'を設定すると 'print(some_text)'は '' print 'は関数ではなく ''値を保持する変数であるので '' str' (some_text) 'は' 'Hello World ''(some_text)'を意味しているので、 'NPC = ...'や 'some_NCP_object = ...'のようなコード行で見つけなければなりません。 – furas