Python。如何从lis中删除对象

2024-09-30 01:19:25 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在学习基本的游戏编程,我有一个子弹类,当然是游戏中子弹的课程。在

bulletGroup = [i for i in bulletGroup if i.buly < screen.get_height()]
for shot in bulletGroup:
    shot.buly -=3

这是我所做的,这样我就可以删除那些已经通过屏幕的项目符号,但是它似乎并没有减少我列表的长度,所以第一行代码可能无法工作。那么我如何检查一个对象列表,然后删除所有我想销毁的对象。在

编辑: 是的,我通过打印来检查列表中的对象是否是buly,而且它们绝对小于屏幕高度。但他们仍然是名单的一部分?所有这些都是在游戏循环顺便说一句,所以每一个滴答声都应该更新那些失控子弹的子弹组。在


Tags: 对象in游戏列表forif屏幕编程
2条回答

每次从buly中减去3,因此它永远不会大于screen.get_height()。在

根据游戏的工作方式,您应该将buly与{}进行比较:

bulletGroup = [i for i in bulletGroup if i.buly >= 0]
for shot in bulletGroup:
    shot.buly -= 3

或者将3添加到buly中:

^{pr2}$

您可能还发现,最好是保留一个固定的项目符号库,而不是将它们添加到列表中然后删除它们。相反,给他们一个标志“停用”他们,这样他们就不会更新或绘制每一帧,然后'激活'一个新的,当你需要更多。在

如果你不断地创建和销毁子弹头对象,你会造成大量的垃圾回收,并在游戏中造成周期性的暂停。一个固定的对象池可以防止这成为一个问题,并且可以避免一次意外地创建过多的对象。在

相关问题 更多 >

    热门问题