質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1836閲覧

pygameスプライト作成時に引数でパスを渡したい

nugio.kutusita

総合スコア21

Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/06 13:01

編集2020/05/07 04:25

前提・実現したいこと

入門サイトを参考に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)で呼び出してもダメでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

完全におっしゃる通りでした。腑におちました。

エラーメッセージの意味をしっかり考えれば気付けるミスですね。解説ためになります。

ありがとうございました。

投稿2020/05/06 16:05

nugio.kutusita

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

PyGameは使った事がありませんが。

python

1 self.image = pygame.image.load(path).convert_alpha

Surface.convert_alphaはメソッドのようですので、カッコを書き忘れているのではないでしょうか。
(self.imageconvert_alphaメソッドそのものを代入しているので、convert_alphaメソッドにget_rectという属性はないと怒られているようです)

python

1 self.image = pygame.image.load(path).convert_alpha()

投稿2020/05/06 13:31

katsuko

総合スコア3462

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nugio.kutusita

2020/05/06 16:06

完全におっしゃる通りでした。腑におちました。 エラーメッセージの意味をしっかり考えれば気付けるミスですね。解説ためになります。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問