2012-03-04 9 views
1

こんにちは、私は自分で三目並べのプロジェクトに取り組んでいます。私はプログラミングクラスを取っていないので、その宿題はありません。三目並べと

私はかなり残りのコードを書かれているし、今AIに取り組んでいます。

AIの場合は、(2次元配列)のコピーを取って、それが移動で勝てるかどうかをチェックします。プレイヤーができる場合は、2つの移動でできる場合は、プレーヤーなど、私が含まれるいくつかの他のものがあります。だからこれを行うには、私は配列のコピーを渡す必要があると思うが、私はどのように配列をコピーするか分からない。それは基本的に私の質問です、あなたはどのように配列をコピーしますか?

+0

あなたが先のstd ::ベクトル 'の配列を選択した理由がある> '? – hmjd

+0

よく私はプログラミングに新たなんだと私はそれらを聞いたことがあるが、私は、まだベクターにもらっていません。あなたは配列の上にそれらをお勧めしますか? –

+1

@hmjd:ボードを固定しているので、静的に既知のサイズは、動的データ構造が不適切と思われます。 –

答えて

4

あなたはそれがデフォルトで生成されたコピーコンストラクタと代入演算子によって自動的にコピーされます。その場合には、クラスの中に配列をラップすることができます:

enum EField { empty, cross, oh }; 

typedef std::array<EField, 9> TTTBoard; // C++11, or use std::tr1::array 

するか、手動で操作を行います。

struct TTTBoard 
{ 
    EField data[9]; // or even EField data[3][3] 
}; 

今、あなたは意志でそれをコピーすることができます。

TTTBoard b; 
TTTBoard c = b; 
+0

structで最後の部分を取得しますが、enumが何であるかtypedefを知っていません。 –

+0

+1 'std :: vector'に関する限り、私はコピーの容易さだけに関心がありました。 – hmjd

+0

@PatrickKennedy:あなたが好きなC++の本を読んでからもう少し時間を費やしたら、あなたは確かにそれらの質問に対する答えを持っています! –

3

あなたがconceせずに行うことができ巧妙なトリックを

struct TicTac{ 
    int board[3][3]; 
} 

そして、ちょうどあなたの関数の引数としてそれを渡す:配列のコピーを持つrning自分で自分の3x3のボードの種類を作成することです。

+0

ええと、それは簡単にコピーできますか? –

+0

@PatrickKennedyこの方法では、Kerrekのヒントとして自動的にコピーが行われます。 –

+0

ああ、ありがとう、ありがとう。だから私はオブジェクトを渡すだけで自動的にコピーされます。しかし、それは私がコピーを望んでいないときに私はそのアドレスを渡さなければならないということですか? –

1

あなたは、配列のどのような種類がありますか? 私はあなたが普通の学校の整数配列を持っていると仮定しています。あなたが持っている

: のint配列[3] [3]。

次に、その内容を別の配列にコピーするには、各要素をループする必要があります。 これは、次のように行うことができます。

int MyArray[3][3]; 
int CopyHere[3][3]; 
for(int i = 0; i < sizeof(MyArray); ++i) 
{ 
    for(int j = 0; j < sizeof(MyArray[i]); ++j) 
    { 
     CopyHere[i][j] = MyArray[i][j]; 
    } 
} 

私はレムはそれを見て、どこか昔の三目並べのスクリプトを持っています。

編集:

ここ

http://pastebin.com/Xp5iT2b0

が関連するトピックです:それを見つけた

http://forum.sa-mp.com/showthread.php?t=259549

+0

私は文字配列 –

+0

を持っています。その場合のコードは同じです:) –

関連する問題