[英]Tic-tac-toe game graph design?
這是我作業中的一個普遍問題,我只是在問一些想法或偽代碼。
假設我正在使用C ++構建井字游戲。 我已經擁有一個Node
類,其中包含一個const成員數據,代表當前游戲板狀態,以及一個指向其他Node的const指針數組,其中包含每個可能的下一步狀態。 因此,這將是一個沒有重復節點的有向圖(每個節點都有其獨特的游戲狀態)。
嘗試生成這樣的圖形時遇到麻煩。 似乎我需要使用遞歸,因為Node
類中的所有數據成員都是const,因此無法更改它們。 而且,如果沒有Node的重復,我很難想出立即生成這樣一個圖的好主意(我的意思是將它做成樹很容易,但是會浪費很多空間和時間。) 可能有幫助的一件事是,我能夠比較兩個不同的游戲狀態,並且我認為除<set>
之外,我不允許使用其他模板。
因此,如果有人對此有任何想法,請隨意寫下您的想法或偽代碼。 謝謝
我認為您需要檢查是否存在:
std::set< Node > checked_node;
bool isNodeChecked( Node ){
return checked_node.find( Node )!=checked_node.end();
}
您需要重載類似operator =
和operator <
類的東西,以使std::set
在您的class Node
上工作;
另外std::unordered_map
可能也可以。
(雖然在我看來,井字游戲狀態可以由0到3 ^ 9的非負整數表示。這樣,std :: set就足夠了,但是您需要額外的編碼解碼功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.