复制python的pygame表面对象

2024-06-08 17:10:27 发布

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

我有一个关于复制.deepcopy以及pygame曲面对象。在

我经常使用WSL和python来执行python(因为我必须在我的机器上运行windows,但是我讨厌windows的命令行接口)。 我在学pygame——做一个简单的游戏。一切都很好,但是我试着用我在AppData中定期安装的python3和pygame来启动它,正常情况下正常工作,但是这次它返回了一个WSL中没有发生的错误。在

错误是:TypeError:无法pickle游戏。表面物体 下面是关于错误的代码。在

player = Player(start)
temp = deepcopy(player)

这是课程本身:

^{pr2}$

现在我为什么要做我正在做的事。我从零开始制作东西,我没有查过类似的游戏或其他东西,我只是去了。关键是,在比赛场地上,有一个球员,那里有墙。玩家不能穿墙。在

我这样做的方式是-在移动之前,我做一个深度复制的球员,副本进行移动。然后我检查墙壁的碰撞,如果副本没有撞到墙上,我会移动原来的播放器。然后我删除副本。这是一个非常草率的方法,但我没能想出更好的主意。在

我想让它成功。我不介意是否有人建议我一个更好的方法来复制玩家或者只是用不同的方式来实现这个动作。如果有人想看到更多的代码,告诉我,我很乐意给你更多的代码片段:)

提前谢谢你的帮助。 P、 这不是作业,实际上是在拖延作业


Tags: 方法代码游戏windows错误作业方式玩家
1条回答
网友
1楼 · 发布于 2024-06-08 17:10:27

没有理由复制整个播放器对象。在

如果只使用精灵的Rect来检查碰撞,只需要使用move函数移动Rect。它将返回一个新的、更新的Rect,您可以使用它来检查冲突。在

如果发生碰撞,什么也不做。如果没有冲突,可以通过更改原始的Rect来允许移动,例如使用move_ip。在

相关问题 更多 >