pygame 飞机大战 让子弹再飞一会儿

我转载的飞机大战文章中,由于只是采用飞机或子弹的属性进行隐藏,在子弹和飞机较少时,不影响游戏体验。但当有大量敌机,大量子弹时候,由于需要每次都遍历 list,会卡的动不了。只能采取删除措施了。

在子弹飞出屏幕后,从列表中删除。

敌机飞出屏幕后,从列表中删除。

这似乎很容易实现,判断下坐标就行。但是敌机在幕上被打死,如果删除敌机,该机的子弹也删除了,因为这些子弹是敌机的属性,敌机删了,里面的属性都会自动删除。

要想实现敌机死了,子弹还能在飞一会儿。想出了个笨办法。

在主程序中添加一个self.enemy_bullets 的list。敌人发射的子弹存到里面,这些子弹只有在离开屏幕后才删除。这一个判断可以在子弹类中添加 属性例如 self.outscene,默认False,飞出时设置成True ,主程序里判断该属性。也可以直接在主程序里判读是否超过屏幕。要注意的是,各种坐标计算、绘制、碰撞检查时,应该改用 self.enemy_bullets 了。

但这种用法始终是不舒服,想一步想用pygame.sprint来自动管理这些添加,删除的方法。

猜你喜欢

转载自blog.csdn.net/hailler1119/article/details/88415494