2015-04-09 2 views
0

Я пытаюсь использовать полиморфизм в моем проекте pygame, но я продолжаю получать ошибки.Python: пытается использовать полиморфизм с pygame

У меня есть класс Moveable и класс Objects, который наследуется от Moveable, и я получаю AttributeError: объект «NoneType» не имеет атрибута «ypos» в моем игровом цикле.

Я планирую иметь более подвижные объекты в своем проекте, такие как люди, дома, дорожные знаки ... если я могу заставить это работать.

class Moveable: 
    __name = "" 
    __xpos = 0 
    __ypos = 0 
    __hight = 0 
    __width = 0 
    __speed = 0 
    __image = 0 

    def __init__(self, xpos, ypos, hight, width, speed, image): 
     self.__xpos = xpos 
     self.__ypos = ypos 
     self.__hight = hight 
     self.__width = width 
     self.__image = image 

    def set_xpos(self, xpos): 
     self.__xpos = xpos 

    def get_xpos(self): 
     return self.__xpos 

    # ... and all my other getters and setters... 


class Objects(Moveable): 

    def car(xpos, ypos, width, hight, speed, image): 
     pygame.Surface.blit(gameDisplay, image, [xpos, ypos, hight, width]) 

def game_loop(): 

game_exit = False #sets the game loop to false 

while not game_exit: # runs the game loop until the game exit = true 

    car = Objects.car(random.randrange(250, 550), -400, 60, 70, 4, pygame.image.load('car.png')) 
    gameDisplay.blit(backGroundImg, (0, 0)) #displays the background 
    car.ypos += car.speed # the error is here ********** 

г

ответ

1

Вы должны вернуть Pygame, если это ваше намерение.

def car(xpos, ypos, width, hight, speed, image): 
    return pygame.Surface.blit(gameDisplay, image, [xpos, ypos, hight, width]) 

Как можно заметить, car не возвращает заявление, так присваивая переменной в методе будет возвращать None, следовательно, ваша ошибка при попытке получить доступ к атрибуту на NoneType

+0

вау лол спасибо, не могу поверить, Я пропустил это ... у меня появилась совершенно новая ошибка (объект AttributeError: 'pygame.Rect' не имеет атрибута 'ypos'), но я должен уметь это выяснить. Спасибо! – Du6e

Смежные вопросы