2011-12-06 47 views
1

我在SDL中構建棋盤遊戲,這是我目前面臨的問題。使用SDL的棋盤遊戲

我在廣場1有一個棋子,我擲骰子。基於我在骰子上獲得的價值,棋子移動到另一個方格。在我在線閱讀SDL教程後,我打包移動棋子。但是我面臨的問題是,在將棋子移動到新位置後,舊棋子仍舊停留在舊位置。我在互聯網上找到的教程移動了一個點,但也刷新了背景以掩蓋舊點。但我無法做到這一點,因爲我的比賽板錯綜複雜,還有其他球員坐在那裏的棋子。

SDL有沒有辦法讓我真的可以移動一個棋子,而不必在新的位置創建一個新的棋子並覆蓋舊的棋子?

回答

3

精靈的基本概念:在插入精靈之前,您將保存原始屏幕內容的副本。當您需要刪除精靈時,您只需將存儲的舊內容粘貼回來。

您必須按照正確的順序(LIFO)處理所有對象才能正常工作。由於您通常會進行雙緩衝,所以會發生在冷緩衝區中,所以這不是問題。

1

不,您的代碼將需要能夠重新繪製棋子位置與棋子丟失。計算機沒有任何方法可以在沒有棋子的情況下自動重建棋盤的外觀。

1

這聽起來像你的渲染代碼混入你的遊戲邏輯。你應該分離渲染,這樣你就可以用一個函數調用來重畫整個遊戲場景,然後你可以在遊戲狀態發生可見變化時使用它。

+0

你說得對,這是我使用SDL的第一個項目,所以我從來沒有這樣想過。我已經做了太多的事情來修復渲染,所以我打算用一個正方形掩蓋舊的棋子位置,並在新的位置創建一個新的棋子。 –