Не могу разобраться в отрывке кода - C (СИ)
Формулировка задачи:
Есть исходник игры, если со остальными функциями мне все относительно понятно. То с этим куском все довольно сложно
Функция построена на if else while, но я не могу понять цепочку действий. Прошу небольшое разъяснение, заранее спасибо!
void facetoface()
{
int i,c;
gg=y;
while(gg!=0)
{
gg=0;
if(p!=1)
{
q=0;
while(p!=1)
{
control();
system("cls");
ruc();
printf("\n Ходит Первый Игрок");
printf("\n Управление клавишами дополнительной клавиатуры");
if ((q==1)&&(player[b][a]==1))
{
q++;
e=b;
r=a;
while(player[b][a+1]!=2)
{
w=a;
a++;
}
w=a;
a=r;
}
if ((q==1)&&(player[b][a]!=1))
{
q=0;
}
if ((q==3)&&((e!=b)||(a>w)))
{
q=0;
}
if ((q==3)&&(e==b)&&(a==r))
{
q=0;
}
if ((q==3)&&(e==b)&&(a<=w))
{
player[e][r]=player[b][a];
shashku[e][r]=shashku[b][a];
player[b][a]=1;
shashku[b][a]='*';
p=1;
}
system("cls");
ruc();
printf("\n Ходит Первый игрок");
printf("\n Управление клавишами дополнительной клавиатуры");
}
system("cls");
ruc();
printf("\n Ходит Второй Игрок");
printf("\n Управление клавишами дополнительной клавиатуры");
}
else
{
q=0;
while(p!=0)
{
control();
system("cls");
ruc();
printf("\n Ходит Второй Игрок");
printf("\n Управление клавишами дополнительной клавиатуры");
if ((q==1)&&(player[b][a]==2))
{
q++;
e=b;
r=a;
while(player[b][a-1]!=1)
{
w=a;
a--;
}
w=a;
a=r;
}
if ((q==1)&&(player[b][a]!=2))
{
q=0;
}
if ((q==3)&&((e!=b)||(a=w))
{
player[e][r]=player[b][a];
shashku[e][r]=shashku[b][a];
player[b][a]=2;
shashku[b][a]='*';
p=0;
}
system("cls");
ruc();
printf("\n Ходит Второй Игрок");
printf("\n Управление клавишами дополнительной клавиатуры");
}
system("cls");
ruc();
printf("\n Ходит Первый Игрок");
printf("\n Управление клавишами дополнительной клавиатуры");
for(i=1; i<=y; i++)
{
for(c=1; c<=x; c++)
{
if((player[i][c]==1)&&((player[i][c+1]==0)||(player[i][c-1]==0)))
{
gg++;
}
}
}
}
if(p!=0)
{
for(i=1; i<=y; i++)
{
for(c=1; c<=x; c++)
{
if((player[i][c]==2)&&((player[i][c-1]==0)||(player[i][c+1]==0)))
{
gg++;
}
}
}
}
}
if(p!=1)
{
printf("\n Победил Второй Игрок!!!");
} else
{
printf("\n Победил Первый Игрок!!!");
}
getch();
} Решение задачи: «Не могу разобраться в отрывке кода»
textual
Листинг программы
int y,x,k,a,b,z,n,p,gg,q,w,e,r,player[20][20],array[20][20];
Объяснение кода листинга программы
- Объявляются переменные: y, x, k, a, b, z, n, p, gg, q, w, e, r, player[20][20], array[20][20]
- Переменные y, x, k, a, b, z, n, p, gg, q, w, e, r являются целочисленными типами данных.
- Переменные player[20][20] и array[20][20] являются массивами 20x20, т.е. каждый из них содержит 20 строк по 20 элементов.
- Неизвестно, инициализированы ли переменные и массивы или нет, так как этот код представлен только в части объявления переменных.
- Код не содержит операторов или циклов, поэтому он ничего не делает, кроме объявления переменных.