【问题标题】:Board Game using SDL使用 SDL 的棋盘游戏
【发布时间】:2011-12-06 10:40:37
【问题描述】:

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

我在方格 1 上有一个棋子,我掷骰子。根据我在骰子上得到的值,棋子移动到另一个方格。在我在线阅读 SDL 教程后,我很乐意移动棋子。但我面临的问题是,将棋子移动到新位置后,旧棋子仍留在旧位置。我在互联网上找到的教程移动了一个点,但也刷新了背景以掩盖旧点。但我不能这样做,因为我的棋盘很复杂,还有其他玩家的棋子坐在那里。

在 SDL 中是否有一种方法可以让我真正移动棋子,而不必在新位置创建新棋子并覆盖旧棋子?

【问题讨论】:

    标签: c++ sdl


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      不,您的代码需要能够在没有棋子的情况下重绘该棋盘位置。计算机无法自动重建没有棋子的棋盘应该是什么样子。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 你说得对,这是我第一个使用 SDL 的项目,所以我从来没有这样想过。我在修复渲染方面做得太过分了,所以我打算用一个正方形覆盖旧的 pawn 位置,并在新位置创建一个新 pawn。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多