Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.08 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<windows.h>
  3. #include<stdlib.h>
  4. struct Data{
  5. int number;
  6. char symbol;
  7. }inputValue();
  8.  
  9. int checkWin(char sym[9],char symbol,int step);
  10.  
  11. void main()
  12. {
  13. SetConsoleCP(1251);
  14. SetConsoleOutputCP(1251);
  15. char restart;
  16. Restart: //Метка
  17. run();
  18. printf("\nЕсли ты хочешь сыграть снова - введи '1'. Другое число - выход:");
  19. scanf("%s",&restart);
  20. if(restart == '1')
  21. {
  22. system("cls");
  23. goto Restart;
  24. }
  25. else
  26. exit(0);
  27. }
  28.  
  29. void run()
  30. {
  31. int step = 0;
  32. struct Data info; //Объявление переменной info типа Data
  33. char symbols[9] = {'1','2','3','4','5','6','7','8','9'};
  34. Display(symbols);
  35. NextCh: //Метка
  36. info = inputValue(symbols,step);
  37. symbols[info.number] = info.symbol; //info.number - введённое число, info.symbol - поставленный символ
  38. system("cls");
  39. Display(symbols);
  40. if(checkWin(symbols,info.symbol,step) == 0)
  41. {
  42. step++;
  43. goto NextCh;
  44. }
  45. }
  46. int checkWin(char sym[9],char symbol,int step) //Проверка на победу
  47. {
  48. int i;
  49. for(i=0;i<=6;i+=3) //Строка
  50. if(sym[i] == symbol && sym[i+1] == symbol && sym[i+2] == symbol)
  51. {
  52. printf("\nПобедитель: %c",symbol);
  53. return 1;
  54. }
  55. for(i=0;i<3;i++) //Колонка
  56. if(sym[i] == symbol && sym[i+3] == symbol && sym[i+6] == symbol)
  57. {
  58. printf("\nПобедитель: %c",symbol);
  59. return 1;
  60. }
  61. if(sym[0] == symbol && sym[4] == symbol && sym[8] == symbol)
  62. {
  63. printf("\nПобедитель: %c",symbol);
  64. return 1;
  65. }
  66. else if(sym[2] == symbol && sym[4] == symbol && sym[6] == symbol)
  67. {
  68. printf("\nПобедитель: %c",symbol);
  69. return 1;
  70. }
  71. else if(step == 8)
  72. {
  73. printf("\n-----------===========НИЧЬЯ===========-----------");
  74. return 1;
  75. }
  76. else
  77. return 0;
  78. }
  79. struct Data inputValue(char sym[9],int step)
  80. {
  81. char value;
  82. int i;
  83. struct Data info; //Объявление переменной info типа Data
  84. inputAgain:
  85. if(step%2 == 0)
  86. {
  87. printf("\nВыбор X:");
  88. }
  89. else
  90. {
  91. printf("\nВыбор O:");
  92. }
  93. scanf("%s",&value);
  94. for(i=0;i<9;i++)
  95. {
  96. if(value == sym[i])
  97. {
  98. info.number = i;
  99. if(step%2 == 0)
  100. info.symbol = 'X';
  101. else
  102. info.symbol = 'O';
  103. break;
  104. }
  105. else
  106. {
  107. info.number = -1;
  108. info.symbol = ' ';
  109. }
  110. }
  111. if(info.number == -1)
  112. {
  113. system("cls");
  114. printf("\t\t\tКрестики - нолики");
  115. printf("\nСимвол игрока 1: X");
  116. printf("\nСимвол игрока 2: O");
  117. printf("\n\t\t\t | | ");
  118. printf("\n\t\t\t %c | %c | %c ",sym[6],sym[7],sym[8]);
  119. printf("\n\t\t\t-------|-------|-------");
  120. printf("\n\t\t\t %c | %c | %c ",sym[3],sym[4],sym[5]);
  121. printf("\n\t\t\t-------|-------|-------");
  122. printf("\n\t\t\t %c | %c | %c ",sym[0],sym[1],sym[2]);
  123. printf("\n\t\t\t | | ");
  124. printf("\nВведено неверное значение!");
  125. goto inputAgain;
  126. }
  127. return info;
  128. }
  129.  
  130. void Display(char sym[9])
  131. {
  132. printf("\t\t\tКрестики - нолики");
  133. printf("\nСимвол игрока 1: X");
  134. printf("\nСимвол игрока 2: O");
  135. printf("\n\t\t\t | | ");
  136. printf("\n\t\t\t %c | %c | %c ",sym[6],sym[7],sym[8]);
  137. printf("\n\t\t\t-------|-------|-------");
  138. printf("\n\t\t\t %c | %c | %c ",sym[3],sym[4],sym[5]);
  139. printf("\n\t\t\t-------|-------|-------");
  140. printf("\n\t\t\t %c | %c | %c ",sym[0],sym[1],sym[2]);
  141. printf("\n\t\t\t | | ");
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement