2016-12-29 5 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

Ваш item является ссылкой на метод new_hero.appearance. Чтобы вызвать метод и получить поверхность, он должен вернуться, вам необходимо использовать ():

item = new_hero.appearance() 
# Here -------------------^ 
Смежные вопросы