使用SDL的桌面游戏

Board Game using SDL

本文关键字:游戏 桌面 SDL 使用      更新时间:2023-10-16

我正在用SDL构建一个棋盘游戏,这是我目前面临的问题。

我在方块1上有一个兵,我掷骰子。根据我在骰子上得到的值,小兵移动到另一个方格。在我在线阅读了SDL教程后,我开始移动典当。但我面临的问题是,在移动到一个新的位置后,旧的pawn仍然停留在旧的位置。我在网上找到的教程移动了一个点,但也刷新了背景来掩盖旧的点。但我不能这样做,因为我的游戏棋盘很复杂,那里有其他玩家的棋子。

在SDL中是否有一种方法,我可以真正移动一个兵,而不是在新的位置创建一个新的兵,并掩盖旧的兵?

精灵的基本概念:在插入精灵之前,保存原始屏幕内容的副本。当你需要删除精灵时,你只需要将存储的旧内容粘贴回去。

你必须以正确的顺序(LIFO)来处理所有的对象。由于您通常会使用双缓冲区,所以这发生在冷缓冲区上,所以这不是问题。

不,你的代码将需要能够重新绘制棋盘位置与兵失踪。计算机不可能自动重建出没有兵的棋盘。

听起来你的渲染代码和你的游戏逻辑混在一起了。你应该分开渲染,这样你就可以用一个函数调用重新绘制完整的游戏场景,然后你可以在游戏状态发生明显变化时使用它。