2012-01-21 15 views
0

これは私の宿題からの一般的な質問です。私はいくつかのアイデアや疑似コードを求めています。

C++を使ってtic-tac-toeゲームを構築しようとしているとします。私がすでに持っているものは、現在のゲームボードの状態を表すconstメンバーデータと、すべての可能な次のステップ状態を含む他のノードへのポインタのconst配列を含むNodeクラスです。これは重複したノードを持つ有向グラフです(すべてのノードには独自のゲーム状態があります)。

は、私は、このようなグラフを生成しようとしているトラブルを得ました。 Nodeクラスのすべてのデータメンバーはconstなので、再帰を使用する必要があるようですので、変更する方法はありません。そして、Nodeを二重化することなく、一度にそのようなグラフを生成することをお勧めします(私はそれをツリーにするのは簡単ですが、多くの時間と空間を無駄にします)。私は2つの異なるゲーム状態を比較することができますし、私は<set>以外のテンプルを使用することは許されないと考えています。

誰かがこれについて何か考えている場合は、あなたの考えや疑似コードを書き留めてください。私はあなたが必要だと思うTic-tac-toeゲームグラフデザイン?

+0

JavaはサンプルのTicTacToeゲームに付属していますか? –

+0

@PeterLawreyはい何時間も見ていましたが、何も見つからなかったのです。 –

+0

constあなたがそれらを作成する際に、それらだけを設定することができます。あなたはすべてのサブノードを作成した後、あなたが唯一のノードを作成できることを意味する。 –

答えて

0

が存在するかどうかを確認することですありがとう:

std::set<Node> checked_node; 

bool isNodeChecked(Node){ 
    return checked_node.find(Node)!=checked_node.end(); 
} 

あなたのclass Node上で動作するようにstd::setためoperator =operator <のようなものをオーバーロードする必要があります。

またstd::unordered_mapはうまくいくかもしれません。

(私はtic-tac-toeの状態は0から3^9の非負の整数で表すことができますが、このようにしてstd :: setで十分ですが、余分なエンコードデコードが必要です関数

関連する問題