Что делает данный кусок кода? - C (СИ)

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

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

void control()
{
    int i_input;
    i_input=0;
    i_input = getch();
 
    switch (i_input)
    {
    case 56:
        if(b>1)
        {   b--;
            array[b][a]=3;
            array[b+1][a]=0;
        }
        break;
 
    case 50:
        if(b1)
        {   a--;
            array[b][a]=3;
            array[b][a+1]=0;
        }
        break;
 
    case 54:
        if(aЗаранее Спасибо.

		

Решение задачи: «Что делает данный кусок кода?»

textual
Листинг программы
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)))
                {
                    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]=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();
}

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

Данный код представляет собой игру Нарды с двумя игроками, где используется дополнительная клавиатура для управления.

  1. Объяснение кода:
    • Переменная gg инициализируется как 0 и используется для подсчета очков в конце игры.
    • Переменная y представляет собой количество строк на доске (обычно 2 для нард).
    • Переменная x представляет собой количество столбцов на доске (обычно 4 для нард).
    • Переменная player представляет собой двумерный массив, который отслеживает текущие позиции игроков на доске. Значение 1 соответствует первому игроку, а 2 - второму.
    • Переменная shashku представляет собой двумерный массив, который отслеживает текущие позиции шашек на доске. Значение '*' соответствует шашке, которая находится на поле, а 1 или 2 - на базовой линии.
    • Переменная p отслеживает текущий игрок (0 - первый игрок, 1 - второй игрок).
    • Переменная q используется для отслеживания текущего хода игрока.
    • Переменные e и r используются для отслеживания текущей позиции игрока на доске.
    • Переменные w и a используются для отслеживания текущей позиции шашки игрока на доске.
    • В цикле while(gg!=0) происходит основной игровой процесс.
    • Внутренний цикл while(p!=1) выполняет действия, связанные с ходами первого игрока.
    • Внутренний цикл while(p!=0) выполняет действия, связанные с ходами второго игрока.
    • После окончания игры выводится сообщение о победителе.
  2. Список действий:
    • Инициализация переменных gg, y, x, player, shashku, p, q, e, r, w, a.
    • Запуск цикла while(gg!=0), который будет выполняться до тех пор, пока gg не станет равным 0.
    • Внутри цикла while(gg!=0) выполняются следующие действия:
    • Проверка текущего игрока (переменная p).
    • Если p равно 1, то выполняются действия, связанные с ходами первого игрока.
    • Если p равно 0, то выполняются действия, связанные с ходами второго игрока.
    • Если p равно 3 и условие выполняется, то происходит ход первого игрока.
    • Если p равно 3 и условие выполняется, то происходит ход второго игрока.
    • Если p равно 0 и условие выполняется, то происходит ход первого игрока.
    • Если p равно 1 и условие выполняется, то происходит ход второго игрока.
    • Завершение хода игрока.
    • После окончания игры выполняется проверка текущего игрока и выводится соответствующее сообщение о победителе.
    • Код завершается функцией getch(), которая ожидает нажатия клавиши.

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


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

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

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