次の C# コードと同等の C++ コードを作成しようとしています。主な理由は、C# のチュートリアルに従っており、C++ の使用に慣れているからです。私の思考プロセスは、おそらく外側の配列を作成してから、行列のサイズを表す各インデックスに新しい配列を割り当てることです。これで問題ないでしょうか、それとも C++ でこれを実装するためのより良い方法はありますか?
// current C# code
List<int[,]> pieces;
pieces = new List<int[,]>();
/* I Piece */
pieces.Add(new int[4, 4] {
{0, 0, 0, 0},
{1, 1, 1, 1},
{0, 0, 0, 0},
{0, 0, 0, 0}
});
/* J Piece */
pieces.Add(new int[3, 3] {
{0, 0, 1},
{1, 1, 1},
{0, 0, 0}
});
/* O Piece */
pieces.Add(new int[2, 2] {
{1, 1},
{1, 1}
});
/* S Piece */
pieces.Add(new int[3, 3] {
{0, 1, 1},
{1, 1, 0},
{0, 0, 0}
});
/* T Piece */
pieces.Add(new int[3, 3] {
{0, 1, 0},
{1, 1, 1},
{0, 0, 0}
});
/* Z Piece */
pieces.Add(new int[3, 3] {
{1, 1, 0},
{0, 1, 1},
{0, 0, 0}
});
私の最初のコードは、配列内の行列を作成しています。ゲーム自体の「ピース」の数を変更するつもりはないので、固定配列で問題ありません。だから、これは私が同等のものとして書いたものです。明らかに、それは int のエンティティに割り当てることができないと言って、うまくいきませんでした:
int pieces [7];
//I piece
pieces [0] = new int [4][4];
pieces [0] = {
{0, 0, 0, 0},
{1, 1, 1, 1},
{0, 0, 0, 0},
{0, 0, 0, 0}
}
/* And so on for each piece */