Нужно разобраться и написать комментарии к небольшой уже готовой программе - C (СИ)
Формулировка задачи:
Всех приветствую. У меня есть готовый код игры, мне нужно написать комментарии к основным функциям. Код состоит всего из 300 строк, я уже начинал писать комменты, но дальше запутался. Нужна помощь)
Решение задачи: «Нужно разобраться и написать комментарии к небольшой уже готовой программе»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <Windows.h>
int y,x,k,a,b,z,n,p,gg,q,w,e,r,player[20][20],array[20][20]; char shashku[20][20];
void begin()
{
int i,c;
puts("_____Вас приветствует игра Норткотта !_____\n");
puts("_____Правила игры: Имеется прямоугольная доска размером Y*X. Один игрок играет красными шашками, другой синими. \n В начале игры в левом столбце во всех строках расположены красные шашки, в правом столбце - синие. \n За ход игрок может передвинуть любую свою шашку в одной строке на любое число полей в любую сторону. \n При этом нельзя пеерескакивать через шашки противника. Тот игрок, который не может сделать ход, проигрывает. _____\n");
puts("_____Выбирете размер поля y*x_____\n");
puts("_____Введите y____\n");
scanf("%i",&y);
puts("_____Введите x____\n");
scanf("%i",&x);
for(i=0;i<=y+1;i++) // С 1го столбца по 8ой
{
for(c=0;c<=x+1;c++) // с 1ой строки по 8ую
{
if(c==1)
{
player[i][c]=1;
shashku[i][c]='*'; //
}else
{
player[i][c]=0;
shashku[i][c]=' '; //
}
if(c==x)
{
player[i][c]=2;
shashku[i][c]='*'; //
}
if ((c==x+1)||(c==0)||(i==0)||(i==y+1))
{
player[i][c]=-1;
}
}
}
}
void color(int i,int c)
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); // Подключение к консоли
if(z==1)
{
if(player[i][c]==1) // для игрока 1 выбираем красный цвет
{SetConsoleTextAttribute(hConsole, (WORD) ((40 << 4) | 4));}
if(player[i][c]==2) // для игрока 2 выбираем синий цвет
{SetConsoleTextAttribute(hConsole, (WORD) ((40 << 4) | 1)); }
if(player[i][c]==0) // для игрока 2 выбираем синий цвет
{SetConsoleTextAttribute(hConsole, (WORD) ((40 << 4) | 0));} // возвращаем стандартный цвет символов и фон }
}else
{
if(array[i][c]==3)
{SetConsoleTextAttribute(hConsole, (WORD) ((40 << 4) | 2)); }
else
{SetConsoleTextAttribute(hConsole, (WORD) ((40 << 4) | 0));}
}
}
void ruc()
{
int i,c;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); // Подключение к консоли
printf(" ");
for(i=1;i<=x;i++)
{printf(" %i ",i);} // Коордитаны по Х
printf("\n\n");
for(i=1;i<=y;i++) // 9 Столбцов
{
printf("%i ",i); // Координата по Y
for(c=1;c<=x;c++) // 9 строк
{ z=0;
color(i,c); // выбираем цвет
printf("[");
z++;
color(i,c); // выбираем цвет
printf("%c",shashku[i][c]); // вывод символа
z++;
color(i,c); // выбираем цвет
printf("]");SetConsoleTextAttribute(hConsole, (WORD) ((40 << 4) | 0));
}
printf("\n");
}
}
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(b<y)
{b++;
array[b][a]=3;
array[b-1][a]=0;}
break;
case 52:
if(a>1)
{a--;
array[b][a]=3;
array[b][a+1]=0;}
break;
case 54:
if(a<x)
{a++;
array[b][a]=3;
array[b][a-1]=0;}
break;
case 13:
q=q+1;
break;
}
}
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 Ходит игрок 1");
printf("\n Управление клавиwами доп клавиатуры");
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 Ходит игрок 1");
printf("\n Управление клавиwами доп клавиатуры");
}
system("cls");
ruc();
printf("\n Ходит игрок 2");
printf("\n Управление клавиwами доп клавиатуры");
}
else
{
q=0;
while(p!=0)
{
control();
system("cls");
ruc();
printf("\n Ходит игрок 2");
printf("\n Управление клавиwами доп клавиатуры");
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 Ходит игрок 2");
printf("\n Управление клавиwами доп клавиатуры");
}
system("cls");
ruc();
printf("\n Ходит игрок 1");
printf("\n Управление клавиwами доп клавиатуры");
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 Победил игрок 2!");
}else
{
printf("\n Победил игрок 1!");
}
getch();
}
main()
{
int i,c;
system("cls");
/*Получаение дескриптора устройства стандартного вывода*/
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, (WORD) ((40 << 4) | 0)); //определяем цвет символов и фона
q=0;p=0;
begin();
a=1;b=1;
array[b][a]=3;
system("cls");
ruc();
printf("\n Ходит игрок 1");
printf("\n Управление производится кавишами дополнительной клавиатуры");
facetoface();
return 0;
}
Объяснение кода листинга программы
- Переменные
y,x,k,a,b,z,n,p,gg,q,w,e,r,player[20][20],array[20][20]иshashku[20][20]объявлены в начале кода. Их значения представлены в виде строк и чисел. - Функция
begin()выводит приветственное сообщение и правила игры. - Функция
color(int i,int c)отвечает за установку цвета символов на экране. Она использует функциюSetConsoleTextAttributeдля изменения цвета символов и фона. - Функция
ruc()выводит на экран сетку для игры, используя функциюprintf()для вывода координат и символов. - Функция
control()обрабатывает ввод игрока и выполняет соответствующие действия, включая изменение цвета символов и перемещение шашек. - Функция
facetoface()отвечает за игровой процесс между двумя игроками. Она использует вложенные циклы для обработки ходов каждого игрока. - В функции
main()происходит инициализация переменныхqиp, затем вызывается функцияbegin(), после чего начинается игровой процесс. - В конце кода возвращается значение 0, что означает успешное завершение программы.