前提・実現したいこと
入門サイトを参考にpythonのpygameでゲームサンプルを作ろうとしています。
スプライトの引数に画像ファイルのパスを渡してターゲットのスプライトをつくりたいのですが、
以下通りget_rectができないというエラーが出ます。
クラス定義の外でself.imageの読み込みを行い、Target()として呼び出していた時は、エラーはでていませんでした。
引数にパスを指定するところがうまくいっていないように思いますが、
何かわかりますでしょうか。
発生している問題・エラーメッセージ
python
1pygame 1.9.6 2Hello from the pygame community. https://www.pygame.org/contribute.html 3--------------------------------------------------------------------------- 4AttributeError Traceback (most recent call last) 5<ipython-input-1-af808ab4a568> in <module> 6 180 7 181 8--> 182 main() 9 10<ipython-input-1-af808ab4a568> in main() 11 45 screen.blit(bg, rect_bg) # 背景画像の描画 12 46 myplayer = Player() 13---> 47 Target1 = Target(path,speed,float) 14 48 pygame.display.update() 15 49 16 17<ipython-input-1-af808ab4a568> in __init__(self, path, speed, float) 18 168 pygame.sprite.Sprite.__init__(self, self.containers) 19 169 self.image = pygame.image.load(path).convert_alpha 20--> 170 self.rect = self.image.get_rect() 21 171 self.rect.center = (x,y) 22 172 Target.targetcount += 1 23 24AttributeError: 'builtin_function_or_method' object has no attribute 'get_rect'
コード
__main__で呼び出す部分↓
python
1frog_path = "C:\Users\PC\Documents\python\game\sozai\bubbleflog.png" 2path = frog_path 3speed = 1 4float = 1 5Target1 = Target(path,speed,float)
クラス定義の部分↓
python
1class Target(pygame.sprite.Sprite): 2 (x,y) = (40,50) 3 targetcount = 0 4 def __init__(self,path,speed,float): 5 pygame.sprite.Sprite.__init__(self, self.containers) 6 self.image = pygame.image.load(path).convert_alpha 7 self.rect = self.image.get_rect() 8 self.rect.center = (self.x, self.y) 9 Target.targetcount += 1 10 def update(self): 11 self.rect.move_ip(self.speed,-self.float) 12 if self.rect.right > 300 or self.rect.left <0: 13 self.speed = -self.speed 14 if self.rect.top > 200 or self.rect.top < 20: 15 self.float = -self.float
試したこと
クラス定義の外でself.imageの読み込みを行い、Target()として呼び出していた時は、エラーはでていませんでした。
変数をかませず引数1に直接"C:\Users\PC\Documents\python\game\sozai\bubbleflog.png"と打ってもNGでした。
Target(引数1,2,3)で呼び出しても、
Target1 = Target(引数1,2,3)で呼び出してもダメでした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。