Cześć,
Z nazwy pliku, rozumiem, że są to zadania z książki Uczymy dzieci Programowania Bryson Payne. Jest to książka z 2018 roku więc wydaje mi się, że autor realizuje zadania w Python w wersji 3. Widzę, że Ty korzystasz z wersji 2.7. -> "C:\Python27\lib\site-packages\pygame\sprite.py". Ale jeżeli inne ćwiczenia zostały zrealizowane i nie pojawił się błąd to prawdopodobnie w tym wypadku też nie powinno stanowić to problemu.
Druga sprawa, w komunikacie błędu masz informacje o tym, że błąd występuje w linii 52, gdzie powinna znaleźć się instrukcja "lista_duszkow.draw(ekran)". W podanym przez Ciebie kodzie ta instrukcja znajduję się w linii 46. Brakuje 6 linii kodu, jeżeli brakujące linie kodu to komentarze to w takim wypadku to ok.
Po skopiowaniu Twojego kodu, stworzeniu własnej buźki i uruchomieniu kodu w interpreterze wyświetliło mi się czarne okno. Po kliknięciu w dowolnym obszarze program został zatrzymany z błędem:
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "test.py", line 54, in <module>
lista_duszkow.add(nowa_buzka)
File "/home/*****/.virtualenvs/pi/lib/python3.6/site-packages/pygame/sprite.py", line 361, in add
sprite.add_internal(self)
File "/home/*****/.virtualenvs/pi/lib/python3.6/site-packages/pygame/sprite.py", line 163, in add_internal
self.__g[group] = 0
AttributeError: 'buzka' object has no attribute '_Sprite__g'
Problem ten wynika z tego, że klasa buzka nie ma atrybutu _Sprite__g. A w kodzie klasa buzka, dziedziczy atrybuty klasy pygame.sprite.Sprite. Więc dodałem do konstruktora klasy buzka wywołanie konstruktora klasy nadrzędnej:
class buzka(pygame.sprite.Sprite):
...
def __init__(self,pos,xvel,yvel):
super().__init__() # <- wywołanie konstruktora klasy nadrzędnej
...
Dopiero po dodaniu tej linii pojawił mi się błąd, który opisujesz - dlatego zastanawia mnie brakujące 6 linii kodu, bo teoretycznie mając taki kod jaki podałeś, to ten problem powinien pojawić się jako pierwszy, a dopiero po rozwiązaniu tego problemu powinien pojawić się opisywany przez Ciebie problem.
Przechodząc do sedna sprawy to problem tkwi w linii 22
self.rect = self.image.get_rect
get_rect jest metodą obiektu image. Poprawna wersja tej linijki to:
self.rect = self.image.get_rect()
Po tym wszystkim program działa u mnie (Python w wersji 3.6.9 i pygame w wersji 1.9.6) - po kliknięci na dowolny obszar okna, lewym górnym rogu pojawiają się obrazy, o różnym rozmiarze które pochodzą z załadowanego pliku.
Daj znać czy to rozwiązało u Ciebie ten problem.
Jakbyś miał jakieś dodatkowe pytania, coś jest nie jasne w tym co napisałem to śmiało, pisz.
Pozdrawiam,
Nelson89