Tôi hơi mới với python, nhưng quen thuộc với OOP. Tôi đang cố viết một game bằng PyGame. Về cơ bản, mục tiêu của tôi là để làm cho cây mỗi vài giây và di chuyển cây rects trên màn hình.AttributeError: Class Instance không có phương thức __call__
Vì vậy, đây là mã của tôi:
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()
Nhưng khi tôi thực hiện điều này một vài cây đầu tiên được tạo ra thành công nhưng sau đó cửa sổ Pygame đóng lại và tôi nhận được lỗi này:
Traceback (most recent call last):
File "error.py", line 25, in <module>
trees.append(tree())
AttributeError: tree instance has no __call__ method
Ngớ ngẩn với tôi để không nhận thấy điều đó, cảm ơn! :) –
Bạn được chào đón! – Emmanuel