Python 复制精灵

Python 复制精灵,python,pygame,Python,Pygame,我在添加新精灵时遇到问题。我正在寻找以下线索: def duplicate(sprites): for d in sprites: if d.energy >= d.max_energy * 0.9: d.energy = d.energy / 2 new_d = d.duplicate() 因此,如果一个精灵的“能量”超过其“最大能量”的90%,它的能量将减少一半,现在会有第二个精灵与第一个相同。但是我不知道如何实

我在添加新精灵时遇到问题。我正在寻找以下线索:

def duplicate(sprites):
    for d in sprites:
        if d.energy >= d.max_energy * 0.9:
            d.energy = d.energy / 2
            new_d = d.duplicate()

因此,如果一个精灵的“能量”超过其“最大能量”的90%,它的能量将减少一半,现在会有第二个精灵与第一个相同。但是我不知道如何实现这一点。

一般来说,您需要实现
复制
方法,并在该方法中构造Sprite对象的新实例

另一个解决方案是使用Python模块
deepcopy
可以创建对象的深度副本。不幸的是,这不能用于对象,因为
图像
属性是一个无法深入复制的属性。因此,精灵的
deepcopy
将导致错误。
除非您没有任何其他需要深入复制的属性,否则您可以对精灵进行浅复制。
rect
属性是一个对象。精灵的副本需要自己的矩形,因此必须生成一个新的矩形实例。幸运的是,
pygame.Rect
对象可以通过以下方式复制:

new\u d=copy.copy(d)
new_d.rect=d.rect.copy()
import copy