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

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

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

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

パス

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

Python

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

解決済

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

nugio.kutusita
nugio.kutusita

総合スコア18

Pygame

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

パス

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

Python

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

2回答

0評価

0クリップ

1424閲覧

投稿2020/05/06 13:01

編集2020/05/07 04:25

前提・実現したいこと

入門サイトを参考にpythonのpygameでゲームサンプルを作ろうとしています。
スプライトの引数に画像ファイルのパスを渡してターゲットのスプライトをつくりたいのですが、
以下通りget_rectができないというエラーが出ます。

クラス定義の外でself.imageの読み込みを行い、Target()として呼び出していた時は、エラーはでていませんでした。
引数にパスを指定するところがうまくいっていないように思いますが、
何かわかりますでしょうか。

発生している問題・エラーメッセージ

python

pygame 1.9.6 Hello from the pygame community. https://www.pygame.org/contribute.html --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-1-af808ab4a568> in <module> 180 181 --> 182 main() <ipython-input-1-af808ab4a568> in main() 45 screen.blit(bg, rect_bg) # 背景画像の描画 46 myplayer = Player() ---> 47 Target1 = Target(path,speed,float) 48 pygame.display.update() 49 <ipython-input-1-af808ab4a568> in __init__(self, path, speed, float) 168 pygame.sprite.Sprite.__init__(self, self.containers) 169 self.image = pygame.image.load(path).convert_alpha --> 170 self.rect = self.image.get_rect() 171 self.rect.center = (x,y) 172 Target.targetcount += 1 AttributeError: 'builtin_function_or_method' object has no attribute 'get_rect'

コード

__main__で呼び出す部分↓

python

frog_path = "C:\Users\PC\Documents\python\game\sozai\bubbleflog.png" path = frog_path speed = 1 float = 1 Target1 = Target(path,speed,float)

クラス定義の部分↓

python

class Target(pygame.sprite.Sprite): (x,y) = (40,50) targetcount = 0 def __init__(self,path,speed,float): pygame.sprite.Sprite.__init__(self, self.containers) self.image = pygame.image.load(path).convert_alpha self.rect = self.image.get_rect() self.rect.center = (self.x, self.y) Target.targetcount += 1 def update(self): self.rect.move_ip(self.speed,-self.float) if self.rect.right > 300 or self.rect.left <0: self.speed = -self.speed if self.rect.top > 200 or self.rect.top < 20: 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)で呼び出してもダメでした。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Pygame

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

パス

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

Python

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