ВСЕМ, ВСЕМ, ВСЕМ! Привет всем.
Может, кто знает, почему ниже приведенный цикл, исспользуемый мной для поиска собранных линий и их удаления выполняется до бесконечности! Вроде бы я все проверил: явных ерроров нет. Дебаггер при проходе этого цикла выдает следующее:
First-chance exception in 3D Lines 2007.exe (GDI32.DLL): 0xC0000005: Access Violation.
|
А вот и сам цикл:
//Проверяем наличае собранных линий в колличестве 5 и более
int vsp;
//По горизонтали вправо
for (i1=1;i1<14;i1++)
{
for (int i2=1;i2<14;i2++)
{
if (g[i1][i2]==g[i1+1][i2]==g[i1+2][i2]==g[i1+3][i2]==g[i1+4][i2]&&g[i1][i2]!=0&&g[i1+1][i2]!=0&&g[i1+2][i2]!=0&&g[i1+3][i2]!=0&&g[i1+4][i2]!=0)//Найдена линия из 5 шаров
{
vsp=g[i1][i2];//Получаем в переменную vsp тип шариков
//Присваиваим этим клеткам значение "0", то есть удаляем шары
g[i1][i2]=g[i1+1][i2]=g[i1+2][i2]=g[i1+3][i2]=g[i1+4][i2]=0;
//А может в линии шаров больше, чем пять? Проверим и это!
for (int p=5;p<14;p++)
{
if (g[i1+p][i2]==vsp);
{
g[i1+p][i2]=0;//Удаляем и этот шар.
}
if (g[i1+p][i2]!=vsp);
{
break;
}
}
}
}
}