0

私は C++ は初めてですが、C# と Java はよく知っています。でも構わない。チェッカー ゲームのエミュレーションを作成したいと考えています。window - load の新しいイベントを編集しました。これは私がやったことのソースです:

private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
             int matr[7][7];
             int i, j;
             int prevBlack = 1;
             int prevRow = 0;
             int current = 0;

             for (i = 0; i < 8; i++)
             {
                 if ((i + 1) % 2 == 0)
                 {
                     prevBlack = 0;
                 }
                 else
                 {
                     prevBlack = 1;
                 }

                 for (j = 0; j < 8; j++)
                 {
                     if (prevBlack == 1)
                     {
                         current = 0;
                     }
                     else if (i == 0 || i == 1 || i == 2)
                     {
                          current = 2;
                     }
                     else
                     {
                         current = 1;
                     }

                     matr[i][j] = (int)current;

                     if (current == 1 || current == 2)
                     {
                         prevBlack = 1;
                     }
                     else
                     {
                        prevBlack = 0;
                     }
                 }

                 prevRow = i;
             }
         }

問題はmatr[i][j] = (int)current;、コードのこの部分の最後でプログラムが終了することです。コードのこの部分がコメント化されると、ウィンドウが表示されます。

なぜそうなのかわかりません。配列は 8 x 8 です。あなたの助けが必要です :)

4

1 に答える 1

3

配列を として宣言するmatr[7][7]と、サイズは 7x7 になり、有効なインデックスは 0..6 になります。しかし、インデックス 0..7 を使用してこの配列にアクセスしているため、エラーが発生します。

matr[8][8]8x8 配列が必要なので、配列を として宣言する必要があります。

于 2012-10-21T13:20:39.110 に答える