碰到了一个不知道怎么解决

我写了一段代码,报异常,运行BUG,不知道怎么解决,想让各位前辈帮我这个新人看看

for (int i = 0; i < 15; i++) //起名ai进攻吧
{
for (int j = 0; j < 15; j++)
{
if (qipan[i][j] == qqizi)
{
for (aa = 1; aa < 5; aa++) //横向找棋子
{
if (qipan[i + aa][j] != qqizi)
break;
}
if (aa == 2)
{
if (qipan[i + 1][j] == qqizi && qipan[i + 2][j] == 0)
{
qipan[i + 2][j] = qqizi;
Drawbotton(i + 2, j, qqizi);
}
if (qipan[i - 1][j] == 0 && (qipan[i + aa][j] == qizi || qipan[i + aa][j] == 2))
{
qipan[i - 1][j] = qqizi;
Drawbotton(i - 1, j, qqizi);
}
}
if (aa == 3)
{
if (qipan[i + 1][j] == qqizi && qipan[i + 2][j] == qqizi && qipan[i + 3][j] == 0)
{
qipan[i + 3][j] = qqizi;
Drawbotton(i + 3, j, qqizi);
}
if (qipan[i - 1][j] == 0 && (qipan[i + aa][j] == qizi || qipan[i + aa][j] == 2))
{
qipan[i - 1][j] = qqizi;
Drawbotton(i - 1, j, qqizi);
}
}
if (aa == 4)
{
if (qipan[i + 1][j] == qqizi && qipan[i + 2][j] == qqizi && qipan[i + 3][j] == qqizi && qipan[i + 4][j] == 0)
{
qipan[i + 4][j] = qqizi;
Drawbotton(i + 4, j, qqizi);
}
if (qipan[i - 1][j] == 0 && (qipan[i + aa][j] == qizi || qipan[i + aa][j] == 2))
{
qipan[i - 1][j] = qqizi;
Drawbotton(i - 1, j, qqizi);
}
}
// 纵向找棋子
for (aa = 1; aa < 5; aa++)
{
if (qipan[i][j + aa] != qqizi)
break;
}
if (aa == 2)
{
if (qipan[i][j + 1] == qqizi && qipan[i][j + 2] == 0)
{
qipan[i][j + 2] = qqizi;
Drawbotton(i, j + 2, qqizi);
}
if (qipan[i][j - 1] == 0 && (qipan[i][j + aa] == qizi || qipan[i][j + aa] == 2))
{
qipan[i][j - 1] = qqizi;
Drawbotton(i, j - 1, qqizi);
}
}
if (aa == 3)
{
if (qipan[i][j + 1] == qqizi && qipan[i][j + 2] == qqizi && qipan[i][j + 3] == 0)
{
qipan[i][j + 3] = qqizi;
Drawbotton(i, j + 3, qqizi);
}
if (qipan[i][j - 1] == 0 && (qipan[i][j + aa] == qizi || qipan[i][j + aa] == 2))
{
qipan[i][j - 1] = qqizi;
Drawbotton(i, j - 1, qqizi);
}
}
if (aa == 4)
{
if (qipan[i][j + 1] == qqizi && qipan[i][j + 2] == qqizi && qipan[i][j + 3] == qqizi && qipan[i][j + 4] == 0)
{
qipan[i][j + 4] = qqizi;
Drawbotton(i, j + 4, qqizi);
}
if (qipan[i][j - 1] == 0 && (qipan[i][j + aa] == qizi || qipan[i][j + aa] == 2))
{
qipan[i][j - 1] = qqizi;
Drawbotton(i, j - 1, qqizi);
}
}
// 斜向找棋子
for (aa = 1; aa < 5; aa++)
{
if (qipan[i + aa][j + aa] != qqizi)
break;
}
if (aa == 2)
{
if (qipan[i + 1][j + 1] == qqizi && qipan[i + 2][j + 2] == 0)
{
qipan[i + 2][j + 2] = qqizi;
Drawbotton(i + 2, j + 2, qqizi);
}
if (qipan[i - 1][j - 1] == 0 && (qipan[i + aa][j + aa] == qizi || qipan[i + aa][j + aa] == 2))
{
qipan[i - 1][j - 1] = qqizi;
Drawbotton(i - 1, j - 1, qqizi);
}
}
if (aa == 3)
{
if (qipan[i + 1][j + 1] == qqizi && qipan[i + 2][j + 2] == qqizi && qipan[i + 3][j + 3] == 0)
{
qipan[i + 3][j + 3] = qqizi;
Drawbotton(i + 3, j + 3, qqizi);
}
if (qipan[i - 1][j - 1] == 0 && (qipan[i + aa][j + aa] == qizi || qipan[i + aa][j + aa] == 2))
{
qipan[i - 1][j - 1] = qqizi;
Drawbotton(i - 1, j - 1, qqizi);
}
}
if (aa == 4)
{
if (qipan[i + 1][j + 1] == qqizi && qipan[i + 2][j + 2] == qqizi && qipan[i + 3][j + 3] == qqizi && qipan[i + 4][j + 4] == 0)
{
qipan[i + 4][j + 4] = qqizi;
Drawbotton(i + 4, j + 4, qqizi);
}
if (qipan[i - 1][j - 1] == 0 && (qipan[i + aa][j + aa] == qizi || qipan[i + aa][j + aa] == 2))
{
qipan[i - 1][j - 1] = qqizi;
Drawbotton(i - 1, j - 1, qqizi);
}
}
}
}
}

qipan[i + aa][j] != qqizi
报错的位置数组越界了吧,i是【0.14】aa是【0,4】棋盘中是15*15的,那么i+aa就存在越界的风险呀。你代码中的报错应该就是i和aa相加触发了越界异常导致内存报错了呀。