关于这个精灵组的用法

来源:3-6 飞机大战项目我方飞机发射子弹

weixin_慕数据1559209

2020-05-17 10:19:22

老师您好,我对与bullets这个精灵组的用法还是有点不了解

比如最开始的bullets = pygame.sprite.Group() 这个代码的意思是调用精灵组并赋值为bullets么,

在bullet这个模块中,在自定义的update函数中,为什么remove这里的参数是self.plane.bullets呢,这个参数在前面并没有被调用呀

然后就是最后在绘制子弹的时候,代码是our_plane.bullets.update(),这个update函数是指bullet这个模块下的update函数么?如果是的话与前面的bullets有什么关系呢?

麻烦老师详细讲解一下

写回答

2回答

好帮手慕笑蓉

2020-05-17

同学,你好。self.plane是Bullet的实例化对象,但self.plane的值是Plane类的实例化对象,如:

http://img.mukewang.com/climg/5ec0eaa1093449f005820149.jpg

因此调用self.plane即是用到了Plane类的实例OurPlane。

如果解决了你的疑惑,请采纳,祝学习愉快~ 


0

好帮手慕笑蓉

2020-05-17

同学,你好。

  1. bullets = pygame.sprite.Group()是将精灵组赋值给bullets,bullets是Plane类的类属性,而self.plane.bullets是Plane的实例对象plane调用的bullets,而plane是类Bullet里定义的实例化属性,因此可以被调用。

  2. self.our_plane.bullets.update(self)是指精灵组的update函数,而根据源码精灵组的update方法会调用精灵组每个精灵的update方法,每个精灵的update方法指的就是类Bullet里定义的update方法。

如果解决了你的疑惑,请采纳,祝学习愉快~ 

0
heixin_慕数据1559209
h self.plane.bullets这个代码是出自Bullet中的,self.plane也是Bullet的实例化对象,但是bullets是另一个类Plane的类属性 Bullet和Plane这两个类并不是父集子集的关系,为什么可以被调用呢
h020-05-17
共1条回复

0 学习 · 8160 问题

查看课程