Ich bin ein wenig neu bei Python, aber vertraut mit OOP. Ich versuche ein Spiel mit PyGame zu schreiben. Grundsätzlich ist es mein Ziel, Bäume alle paar Sekunden zu rendern und die Baumrecte über den Bildschirm zu bewegen.AttributeError: Klasseninstanz hat keine __call__ Methode
So, hier ist mein Code:
from collections import deque
import pygame,random,sys
pygame.init()
size = 800,600
screen = pygame.display.set_mode(size)
class tree:
def __init__(self):
self.img = pygame.image.load("tree.png")
self.rect = self.img.get_rect()
def render(self):
screen.blit(self.img,self.rect)
def move(self,x,y):
self.rect = self.rect.move(x,y)
#creating a queue of trees
trees = deque()
#appending the first tree on to the queue
trees.append(tree())
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
#appending tree() to trees queue every 300 ms
if pygame.time.get_ticks() % 300 == 0:
trees.append(tree())
#rendering and moving all the tree rects of trees in the queue
for tree in trees:
tree.render()
tree.move(20,2)
pygame.display.flip()
Aber wenn ich dies die ersten paar Bäume ausführen erfolgreich erzeugt aber dann das PyGame Fenster geschlossen, und ich bekomme diese Fehlermeldung:
Traceback (most recent call last):
File "error.py", line 25, in <module>
trees.append(tree())
AttributeError: tree instance has no __call__ method
Dumm von mir, das nicht bemerkt zu haben, danke! :) –
Gern geschehen! – Emmanuel