所以我在学习基本的游戏编程,我有一个子弹类,当然是游戏中子弹的课程。在
bulletGroup = [i for i in bulletGroup if i.buly < screen.get_height()]
for shot in bulletGroup:
shot.buly -=3
这是我所做的,这样我就可以删除那些已经通过屏幕的项目符号,但是它似乎并没有减少我列表的长度,所以第一行代码可能无法工作。那么我如何检查一个对象列表,然后删除所有我想销毁的对象。在
编辑: 是的,我通过打印来检查列表中的对象是否是buly,而且它们绝对小于屏幕高度。但他们仍然是名单的一部分?所有这些都是在游戏循环顺便说一句,所以每一个滴答声都应该更新那些失控子弹的子弹组。在
每次从
buly
中减去3
,因此它永远不会大于screen.get_height()
。在根据游戏的工作方式,您应该将}进行比较:
buly
与{或者将3添加到
^{pr2}$buly
中:您可能还发现,最好是保留一个固定的项目符号库,而不是将它们添加到列表中然后删除它们。相反,给他们一个标志“停用”他们,这样他们就不会更新或绘制每一帧,然后'激活'一个新的,当你需要更多。在
如果你不断地创建和销毁子弹头对象,你会造成大量的垃圾回收,并在游戏中造成周期性的暂停。一个固定的对象池可以防止这成为一个问题,并且可以避免一次意外地创建过多的对象。在
相关问题 更多 >
编程相关推荐