0

画像を移動するだけのプログラムがあります。load_png() 呼び出しの一部として self.rect を記述しようとしましたが、単純に気に入りません。これがうまくいくと思う理由はhttp://www.pygame.org/docs/tut/tom/games6.htmlからのもので、これはうまくいくはずだと言っています:

def __init__(self, side):
            pygame.sprite.Sprite.__init__(self)
            self.image, self.rect = load_png('bat.png')
            screen = pygame.display.get_surface()
            self.area = screen.get_rect()
            self.side = side
            self.speed = 10
            self.state = "still"
            self.reinit()

独自のWebサイトのpygameチュートリアルによると、動作するはずの私のコードは次のとおりです。

def _init_(self):
    pygame.sprite.Sprite._init_(self)
    self.state = 'still'
    self.image =  pygame.image.load('goodGuy.png')
    self.rect = self.image.get_rect()       
    screen = pygame.display.getSurface()

そして、それは私にこのエラーを与えます:

Traceback (most recent call last):
File "C:\Python25\RPG.py", line 37, in <module>
screen.blit(screen, Guy.rect, Guy.rect)
AttributeError: 'goodGuy' object has no attribute 'rect'

私のコードがすべて必要な場合は、コメントを飛ばして編集します。

4

2 に答える 2

1

load_png 関数が定義されていません。

rect プロパティにアクセスする前に、pygame イメージ オブジェクトを作成する必要があります。

self.image = pygame.image.load(file)

次に、次を使用してrect値を割り当てることができます

self.rect = self.image.get_rect()

または、リンクした例に従って load_png 関数を作成することもできます。

于 2012-12-05T03:41:42.037 に答える
0

load_pngpython や pygame に組み込まれている関数はありません。あなたが参照しているチュートリアルは、どこかで手動で定義したと思います。必要なのは、返された Surface オブジェクトpygame.image.load(filename)を呼び出すことができることです。get_rect()完全なコードは次のようになります。

self.image = pygame.image.load('bat.png')
self.rect = self.image.get_rect()

2 番目の問題は、関数 を定義したこと_init_ですが、二重のアンダースコアが必要です: __init__

また、エラーが実際に発生しているコードを投稿する必要があります。

于 2012-12-05T03:39:39.977 に答える