复制精灵

2024-05-23 19:08:32 发布

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

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

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%,它的能量将减少一半,现在会有第二个精灵与第一个相同。不过我不知道该怎么办


Tags: innewforifdefmax精灵energy
1条回答
网友
1楼 · 发布于 2024-05-23 19:08:32

通常,您需要实现duplicate方法,并在该方法中构造Sprite对象的新实例

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

import copy
new_d = copy.copy(d)
new_d.rect = d.rect.copy()

相关问题 更多 >