使用SDL的棋盘游戏

时间:2011-12-06 02:29:29

标签: c++ sdl

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

我在方块1上有一个棋子,我掷骰子。根据骰子上的值,棋子移动到另一个方格。在线阅读SDL教程后,我很想移动这个棋子。但我面临的问题是,在将棋子移动到新位置后,旧棋子仍停留在旧位置。我在互联网上找到的教程移动了一个点,但也刷新了背景以掩盖旧点。但我无法做到这一点,因为我的游戏板错综复杂,其他玩家的棋子也坐在那里。

在SDL中是否有办法真正移动一个棋子而不必在新位置创建一个新棋子并掩盖旧棋子?

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

不,您的代码需要能够重绘该棋盘位置并丢失棋子。如果没有pawn,计算机无法自动重建板的外观。

答案 2 :(得分:1)

听起来你的渲染代码与游戏逻辑混合在一起。您应该将渲染分开,以便您可以使用单个函数调用重绘整个游戏场景,然后只要对游戏状态进行可见的更改,就可以使用该函数调用。