2010-05-22 137 views
2

對於基於回合的遊戲(網格類似於國際象棋棋盤),我有一個方形網格,但是根據您是否將對手棋子至少重疊了一次,遊戲中的棋步是不同的。如何在回合制遊戲中存儲遊戲棋子的路徑?

也就是說,如果你還沒有重疊在最外面的網格(擊敗任何對手的走卒)如下

alt text http://img17.imageshack.us/img17/4508/squaregrid7x7home.png

如果你舔你的對手的棋子至少一次,然後你到達回家,這樣。所有他的所有棋子到達「家」的球員首先獲勝。

alt text http://img249.imageshack.us/img249/318/squaregrid7x7movesimple.png

黃色的那些是藏身處,即對手棋子和玩家的棋子都住進了同一電網,這是不被認爲是研磨(對手)。該搭接棋子將返回到它的起點。

現在問題是,什麼是有效的方式來存儲所有pawn的路徑。我們將有4個pawn的玩家和4個對手pawn。

有沒有什麼模式以優雅的方式存儲這樣的靜態信息?

感謝您的時間

+0

棋子是否總是圍繞遊戲棋盤在設定的路徑上移動?每個空格是否從開始到結束順序編號(即使編號未顯示在屏幕上,它可能在數據結構中)?看上面的例子,如果你只是存儲了編號空間的列表(例如45,48,6,0,...),那麼棋子似乎會任意移動,而不是朝着某個目標移動。如果空格按順序編號,則很容易確定一個棋子是否搭疊(超越)另一個棋子,因爲lapper的最近位置將高於lapee的最近位置。 – 2010-05-22 01:41:29

+0

是的,棋子總是在設定的路徑中移動。 空間內部編號,我們需要跟蹤典當位置,因爲只有當對手典當被重疊時,典當纔會進入內部循環(36,38 ..) – panzerschreck 2010-05-22 15:42:12

回答

2

一個List應該只是罰款。這對我來說似乎很優雅。

如果有一些首要的性能需求;例如你正在實現一個自動播放器,需要探索一個巨大的替代動作樹,你可能會考慮其他的東西。但是數據結構的要求將會受到您的遊戲算法的啓發,我們無法預測這一點。

+0

我需要由某個AI驅動的對手,它會決定下一步行動。 – panzerschreck 2010-05-22 15:42:58