2016-12-29 6 views
1

私はpygameにはまったく新しく、キーボードを使用して画面上でイメージを移動できる単純なプログラムを作成しようとしています。外観メソッドを使用して画面上の画像を取得しようとすると、タイトルにエラーが表示されます。私はクラスを使用せずに書いた作業バージョンを持っていますが、クラスを理解して将来的に実装できるようにしたいと思います。ここでTypeError:引数1はpygame.Surfaceでなければならず、メソッドではありません。

は私のコードです:

import pygame, sys 
from pygame.locals import * 
pygame.init() 

FPS = 30 
fpsClock = pygame.time.Clock() 



DISPLAYSURF = pygame.display.set_mode((600, 500), 0, 32) 
pygame.display.set_caption('Animation') 



class Hero(): 
    def __init__(self): 
     posx = 10 
     posy = 10 


    def appearance(): 
     return pygame.image.load('C:\\Users\\admin\\Desktop\\right.png') 

    def move_right(x): 
     posx += 10 


    def move_left(x): 
     posx -= 10 


    def move_up(y): 
     posy -= 10 


    def move_down(y): 
     posy += 10 


new_hero = Hero() #create a Hero 

while True: 

    item = new_hero.appearance 
    DISPLAYSURF.blit(item, (posx, posy)) #error 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 

    pygame.display.update() 
    fpsClock.tick(FPS) 

答えて

1

あなたが方法ではなく、戻り値の代入されます:あなたの代わりに何をすべき

item = new_hero.appearance 

されています:

item = new_hero.appearance() 
1

あなたitemnew_hero.appearanceメソッドへの参照です。メソッドを呼び出して返すサーフェスを取得するには、()を使用する必要があります。

item = new_hero.appearance() 
# Here -------------------^ 
関連する問題