0

我是 C++ 新手,但我很了解 C#、java。但是不要紧。我想创建跳棋游戏仿真。我为窗口添加了新事件 - 加载。这是我所做的事情的来源:

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 回答