2024-05-23 19:08:32 发布
网友
我在添加新精灵时遇到问题。我正在寻找以下线索:
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%,它的能量将减少一半,现在会有第二个精灵与第一个相同。不过我不知道该怎么办
通常,您需要实现duplicate方法,并在该方法中构造Sprite对象的新实例
duplicate
另一个解决方案是使用Python ^{}模块deepcopy可以创建对象的深度副本。不幸的是,这不能用于^{}对象,因为image属性是^{},无法深入复制。因此,精灵的deepcopy将导致错误。 除非您没有任何其他需要深入复制的属性,否则可以对精灵进行浅copy。rect属性是一个^{}对象。Sprite的副本需要自己的矩形,因此必须生成一个新的矩形实例。幸运的是pygame.Rect对象可以被^{}复制:
deepcopy
image
copy
rect
pygame.Rect
import copy
new_d = copy.copy(d) new_d.rect = d.rect.copy()
通常,您需要实现
duplicate
方法,并在该方法中构造Sprite对象的新实例另一个解决方案是使用Python ^{} 模块} 对象,因为} ,无法深入复制。因此,精灵的} 对象。Sprite的副本需要自己的矩形,因此必须生成一个新的矩形实例。幸运的是} 复制:
deepcopy
可以创建对象的深度副本。不幸的是,这不能用于^{image
属性是^{deepcopy
将导致错误。除非您没有任何其他需要深入复制的属性,否则可以对精灵进行浅
copy
。rect
属性是一个^{pygame.Rect
对象可以被^{相关问题 更多 >
编程相关推荐