2014-05-15 68 views
0

我一直在libtcod/C++ roguelike,我碰到的一個小問題。跟蹤項目和怪物位置

當玩家進入樓層之間,從以前的地面停留在新地圖上,在牆壁結束了,每個樓層我去之間時間的項目,更多的項目生成,直到地圖淹沒。

有沒有什麼辦法來保存特定樓層(可能與種子),這樣演員的當前X/Y被保留供以後重裝?

+0

你是如何存儲地圖和它的內容? – PomfCaster

+0

現在,它只是根據PRNG放置物品,然後在玩家進入關卡時刪除它們。我試圖將它們存儲在我的地圖 - >保存(它保留了地圖的FOV),但是我得到了一些我無法修復的錯誤。 –

回答

1

創建Map類存儲地圖的詳細信息(如牆壁,樓梯等),在地板上,任何怪物物品。然後你可以創建一個std::map<int, Map>,關鍵是樓層號碼。

然後,每當你改變你的地板檢查std::map,看看是否Map對象該樓層是否存在,如果它不加載,如果不是創建一個新的Map

+0

因爲我已位於有一個使用一個布爾值來存儲它平鋪在地圖已探索在瓷磚結構,我可以添加一個withActors布爾檢查哪些瓷磚對他們的行爲? –

+0

你可以,但我真的不明白你爲什麼要將它存儲在'Tile'結構中。 – PomfCaster

+0

那麼,通過創建地圖來生成地圖的BSP函數是這樣做的,然後檢查isExplored是否爲true;我想我可以爲演員做同樣的事情(構建地圖,然後檢查是否有任何演員改變了位置)。 –