Что делает данный кусок кода? - 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();
}
Объяснение кода листинга программы
Данный код представляет собой игру Нарды с двумя игроками, где используется дополнительная клавиатура для управления.
- Объяснение кода:
- Переменная
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)выполняет действия, связанные с ходами второго игрока. - После окончания игры выводится сообщение о победителе.
- Переменная
- Список действий:
- Инициализация переменных
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(), которая ожидает нажатия клавиши.
- Инициализация переменных