Не могу разобраться в отрывке кода - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть исходник игры, если со остальными функциями мне все относительно понятно. То с этим куском все довольно сложно
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();
}
Функция построена на if else while, но я не могу понять цепочку действий. Прошу небольшое разъяснение, заранее спасибо!

Решение задачи: «Не могу разобраться в отрывке кода»

textual
Листинг программы
int y,x,k,a,b,z,n,p,gg,q,w,e,r,player[20][20],array[20][20];

Объяснение кода листинга программы

  1. Объявляются переменные: y, x, k, a, b, z, n, p, gg, q, w, e, r, player[20][20], array[20][20]
  2. Переменные y, x, k, a, b, z, n, p, gg, q, w, e, r являются целочисленными типами данных.
  3. Переменные player[20][20] и array[20][20] являются массивами 20x20, т.е. каждый из них содержит 20 строк по 20 элементов.
  4. Неизвестно, инициализированы ли переменные и массивы или нет, так как этот код представлен только в части объявления переменных.
  5. Код не содержит операторов или циклов, поэтому он ничего не делает, кроме объявления переменных.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы