Нужно разобраться и написать комментарии к небольшой уже готовой программе - 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, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д