Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<windows.h>
- #include<stdlib.h>
- struct Data{
- int number;
- char symbol;
- }inputValue();
- int checkWin(char sym[9],char symbol,int step);
- void main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- char restart;
- Restart: //Метка
- run();
- printf("\nЕсли ты хочешь сыграть снова - введи '1'. Другое число - выход:");
- scanf("%s",&restart);
- if(restart == '1')
- {
- system("cls");
- goto Restart;
- }
- else
- exit(0);
- }
- void run()
- {
- int step = 0;
- struct Data info; //Объявление переменной info типа Data
- char symbols[9] = {'1','2','3','4','5','6','7','8','9'};
- Display(symbols);
- NextCh: //Метка
- info = inputValue(symbols,step);
- symbols[info.number] = info.symbol; //info.number - введённое число, info.symbol - поставленный символ
- system("cls");
- Display(symbols);
- if(checkWin(symbols,info.symbol,step) == 0)
- {
- step++;
- goto NextCh;
- }
- }
- int checkWin(char sym[9],char symbol,int step) //Проверка на победу
- {
- int i;
- for(i=0;i<=6;i+=3) //Строка
- if(sym[i] == symbol && sym[i+1] == symbol && sym[i+2] == symbol)
- {
- printf("\nПобедитель: %c",symbol);
- return 1;
- }
- for(i=0;i<3;i++) //Колонка
- if(sym[i] == symbol && sym[i+3] == symbol && sym[i+6] == symbol)
- {
- printf("\nПобедитель: %c",symbol);
- return 1;
- }
- if(sym[0] == symbol && sym[4] == symbol && sym[8] == symbol)
- {
- printf("\nПобедитель: %c",symbol);
- return 1;
- }
- else if(sym[2] == symbol && sym[4] == symbol && sym[6] == symbol)
- {
- printf("\nПобедитель: %c",symbol);
- return 1;
- }
- else if(step == 8)
- {
- printf("\n-----------===========НИЧЬЯ===========-----------");
- return 1;
- }
- else
- return 0;
- }
- struct Data inputValue(char sym[9],int step)
- {
- char value;
- int i;
- struct Data info; //Объявление переменной info типа Data
- inputAgain:
- if(step%2 == 0)
- {
- printf("\nВыбор X:");
- }
- else
- {
- printf("\nВыбор O:");
- }
- scanf("%s",&value);
- for(i=0;i<9;i++)
- {
- if(value == sym[i])
- {
- info.number = i;
- if(step%2 == 0)
- info.symbol = 'X';
- else
- info.symbol = 'O';
- break;
- }
- else
- {
- info.number = -1;
- info.symbol = ' ';
- }
- }
- if(info.number == -1)
- {
- system("cls");
- printf("\t\t\tКрестики - нолики");
- printf("\nСимвол игрока 1: X");
- printf("\nСимвол игрока 2: O");
- printf("\n\t\t\t | | ");
- printf("\n\t\t\t %c | %c | %c ",sym[6],sym[7],sym[8]);
- printf("\n\t\t\t-------|-------|-------");
- printf("\n\t\t\t %c | %c | %c ",sym[3],sym[4],sym[5]);
- printf("\n\t\t\t-------|-------|-------");
- printf("\n\t\t\t %c | %c | %c ",sym[0],sym[1],sym[2]);
- printf("\n\t\t\t | | ");
- printf("\nВведено неверное значение!");
- goto inputAgain;
- }
- return info;
- }
- void Display(char sym[9])
- {
- printf("\t\t\tКрестики - нолики");
- printf("\nСимвол игрока 1: X");
- printf("\nСимвол игрока 2: O");
- printf("\n\t\t\t | | ");
- printf("\n\t\t\t %c | %c | %c ",sym[6],sym[7],sym[8]);
- printf("\n\t\t\t-------|-------|-------");
- printf("\n\t\t\t %c | %c | %c ",sym[3],sym[4],sym[5]);
- printf("\n\t\t\t-------|-------|-------");
- printf("\n\t\t\t %c | %c | %c ",sym[0],sym[1],sym[2]);
- printf("\n\t\t\t | | ");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement