复制pygame.Surface对象

时间:2018-05-15 02:49:19

标签: pygame

我在游戏中编写游戏,你可以在其中放置士兵,然后进行战斗。在他们完成战斗之后,我希望屏幕返回到战斗开始之前的位置。我想使用copy.deepcopy()复制包含士兵的pygame.sprite.Group对象,如下所示:

oldRUnits = copy.deepcopy(RedUnits)
oldBUnits = copy.deepcopy(BlueUnits)

然而,我发现pygame.sprite.Groups并不喜欢被深度复制。它只是引发了pygame.error。我尝试深入复制组中的每个pygame.sprite.Sprite对象,如下所示:

oldRUnits = []
oldBUnits = []
for i in RedUnits:
    oldRUnits.append(copy.deepcopy(i))
for i in BlueUnits:
    oldBUnits.append(copy.deepcopy(i))

然而,他们不喜欢被深度复制,所以我被卡住了。我想知道是否有办法复制这个以及是否有更好的方法来实现我的目标。谢谢!

1 个答案:

答案 0 :(得分:0)

我想我有解决问题的办法。而不是

oldRUnits = []
oldBUnits = []
for i in RedUnits:
    oldRUnits.append(copy.deepcopy(i))
for i in BlueUnits:
    oldBUnits.append(copy.deepcopy(i))

我可以写

oldRUnits = []
oldBUnits = []
for i in RedUnits:
    oldRUnits.append(type(i)(*i.get_init_args()))
for i in BlueUnits:
    oldBUnits.append(type(i)(*i.get_init_args()))