2017-10-06 6 views
0

Lorsque j'utilise la méthode player, il me donne suis erreur:lorsque j'utilise une méthode, je reçois un TypeError: objet « pygame.Surface » est pas appelable,

TypeError: 'pygame.Surface' object is not callable".

Cependant, je ne J'ai des problèmes quand j'utilise la même chose mais sans utiliser la méthode (voir la ligne ci-dessus). Je ne sais pas pourquoi. Je suis un débutant et pourrait utiliser de l'aide.

Voici le code complet:

import pygame 
from pygame.locals import * 
from sys import exit 

class Plane(object): 
    def __init__(self,screen_temp): 
     self.image = pygame.image.load('resources/image/shoot.png') 
     self.rect = pygame.Rect(0,99,102,126) 
     self.player = self.image.subsurface(self.rect) 

     self.player_pos = [200,600] 
     self.screen = screen_temp 

    def player(self): 
     self.screen.blit(self.player,self.player_pos) 

    def key_press(self): 
     key_press = pygame.key.get_pressed() 
     if key_press[K_UP]: 
      self.player_pos[1]-=5 
     if key_press[K_DOWN]: 
      self.player_pos[1]+=5 
     if key_press[K_LEFT]: 
      self.player_pos[0]-=5 
     if key_press[K_RIGHT]: 
      self.player_pos[0]+=5 


def main(): 
    screen = pygame.display.set_mode((480,800)) 
    pygame.display.set_caption("飞机大战") 

    background = pygame.image.load('resources/image/background.png') 

    plane = Plane(screen) 

    while True: 
     screen.blit(background,(0,0)) 
     #plane.screen.blit(plane.player,plane.player_pos) this can work 
     plane.player() # this will get a TypeError 

     pygame.display.update() 
     plane.key_press() 

     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       pygame.quit() 
       exit() 

if __name__ == "__main__": 
    main() 

Répondre

0

Vous définissez Plane.player deux fois:

  • comme un attribut self.player = self.image.subsurface(self.rect)
  • comme méthode def player(self):

Ces deux sont en collision et peut être corrigé en renommant l'un d'entre eux .

+1

merci beaucoup! tu as aimé mon problème! Ça m'aide beaucoup –