Нужно разобраться и написать комментарии к небольшой уже готовой программе - 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;   
}

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

  1. Переменные y, x, k, a, b, z, n, p, gg, q, w, e, r, player[20][20], array[20][20] и shashku[20][20] объявлены в начале кода. Их значения представлены в виде строк и чисел.
  2. Функция begin() выводит приветственное сообщение и правила игры.
  3. Функция color(int i,int c) отвечает за установку цвета символов на экране. Она использует функцию SetConsoleTextAttribute для изменения цвета символов и фона.
  4. Функция ruc() выводит на экран сетку для игры, используя функцию printf() для вывода координат и символов.
  5. Функция control() обрабатывает ввод игрока и выполняет соответствующие действия, включая изменение цвета символов и перемещение шашек.
  6. Функция facetoface() отвечает за игровой процесс между двумя игроками. Она использует вложенные циклы для обработки ходов каждого игрока.
  7. В функции main() происходит инициализация переменных q и p, затем вызывается функция begin(), после чего начинается игровой процесс.
  8. В конце кода возвращается значение 0, что означает успешное завершение программы.

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


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

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

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