2011-12-06 137 views
1

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

我在广场1有一个棋子,我掷骰子。基于我在骰子上获得的价值,棋子移动到另一个方格。在我在线阅读SDL教程后,我打包移动棋子。但是我面临的问题是,在将棋子移动到新位置后,旧棋子仍旧停留在旧位置。我在互联网上找到的教程移动了一个点,但也刷新了背景以掩盖旧点。但我无法做到这一点,因为我的比赛板错综复杂,还有其他球员坐在那里的棋子。

SDL有没有办法让我真的可以移动一个棋子,而不必在新的位置创建一个新的棋子并覆盖旧的棋子?

回答

3

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

您必须按照正确的顺序(LIFO)处理所有对象才能正常工作。由于您通常会进行双缓冲,所以会发生在冷缓冲区中,所以这不是问题。

1

不,您的代码将需要能够重新绘制棋子位置与棋子丢失。计算机没有任何方法可以在没有棋子的情况下自动重建棋盘的外观。

1

这听起来像你的渲染代码混入你的游戏逻辑。你应该分离渲染,这样你就可以用一个函数调用来重画整个游戏场景,然后你可以在游戏状态发生可见变化时使用它。

+0

你说得对,这是我使用SDL的第一个项目,所以我从来没有这样想过。我已经做了太多的事情来修复渲染,所以我打算用一个正方形掩盖旧的棋子位置,并在新的位置创建一个新的棋子。 –