Python 从列表中绘制多个对象(PyGame)
我对python相当陌生,正在尝试为大学课程创建一个boid克隆Python 从列表中绘制多个对象(PyGame),python,pygame,Python,Pygame,我对python相当陌生,正在尝试为大学课程创建一个boid克隆 #the class class Boid: def __init__(self, screen): self.screen = screen self.pos = Vector2D(random.randrange(400), random.randrange(400)) self.rad = 20 self.speed = Vector2D(-4,
#the class
class Boid:
def __init__(self, screen):
self.screen = screen
self.pos = Vector2D(random.randrange(400), random.randrange(400))
self.rad = 20
self.speed = Vector2D(-4, -4)
def draw(self):
py.draw.circle(self.screen, (255,50,50), (self.pos.x, self.pos.y), self.rad)
# adding objects to a list
self.boid = Boid(self.screen)
self.boid1 = Boid(self.screen)
self.boid2 = Boid(self.screen)
self.boidlist = [self.boid, self.boid1, self.boid2]
#in the game loop, drawing from list
for boid in boidlist:
boid.draw()
据我所知,它目前只绘制了三次第一个对象,而不是boid(1)、boid(2)等。我尝试了如下操作:
for i in range(3):
boid(i).draw()
但我不知道如何格式化它,使其能够正常工作。
非常感谢您的帮助 您误解了如何创建和实例化类: 通过键入:
self.boid = Boid(self.screen)
self.boid1 = Boid(self.screen)
self.boid2 = Boid(self.screen)
我想您应该创建3个Boid实例,并将它们的screen参数设置为screen
。为此:
boid = Boid(screen) # 'self.' is only when you create the class
boid1 = Boid(screen)
boid2 = Boid(screen)
最终固定代码:
向列表中添加对象
请发布一个完整的回溯。你在另一个类中有实例化代码吗?谢谢你的输入。是的,实例化代码在一个游戏主类中,但我通过一些调整,成功地使它与C.的解决方案一起工作。您仍然应该发布完整的示例。看起来您所要做的就是将
boidlist
更改为self.boidlist
。
boid = Boid(screen) # 'self.' is only when you create the class
boid1 = Boid(screen)
boid2 = Boid(screen)
boidlist = [boid, boid1, boid2]
#in the game loop, drawing from list
for boid in boidlist: # This should now work correctly
boid.draw()