Advertisement
force1987

TicTacToe

Sep 7th, 2023
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.17 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. #include<windows.h>
  4. #include <ctime>
  5.  
  6. void results(int win, int lose)
  7. {
  8. cout << "Счёт " << win << " : " << lose;
  9. if (win > lose)cout << " в пользу ИГРОКА\n";
  10. else if (win < lose)cout << " в пользу КОМПЬЮТЕРА\n";
  11. else cout << " равный.\n";
  12. }
  13.  
  14. void draw(char arr[3][3])
  15. {
  16. system("cls");
  17. cout << " КРЕСТИКИ-НОЛИКИ\n\n 0 1 2" << endl;
  18. for (short i = 0; i < 3; i++)
  19. {
  20. cout << " " << i;
  21. for (short j = 0; j < 3; j++)
  22. cout << char(124) << " " << char(124);
  23. cout << endl << endl;
  24. }
  25. }
  26.  
  27. int main()
  28. {
  29. setlocale(LC_ALL, "RUS");
  30. srand(time(NULL));
  31. char arr[3][3]{};
  32. bool ai, zero;
  33. int win = 0, lose = 0;
  34. short ch = 0, cv = 0, cd = 0, cr = 0, bh = -1, bhr = -1, bv = -1, bvr = -1, bd = -1, br = -1, checkh = -1, checkv = -1, iwinh = -1, iwinv = -1, a, b, res;
  35. draw(arr);
  36. system("pause");
  37. while (true) {
  38. res = 0;
  39. draw(arr);
  40. cout << "Бросаем жребий\n";
  41. ai = rand() % 2;
  42. Sleep(1000);
  43. if (ai == true) cout << "Первым ходит КОМПЬЮТЕР";
  44. else cout << "Первым ходит ИГРОК";
  45. cout << endl;
  46. Sleep(1000);
  47. while (true)
  48. {
  49.  
  50. zero = false;
  51. ch = 0, cv = 0, cd = 0, cr = 0;
  52. if (ai == true)
  53. {
  54. checkh = -1, checkv = -1, iwinh = -1, iwinv = -1; bh = -1, bhr = -1, bv = -1, bvr = -1, bd = -1, br = -1;
  55. }
  56. system("cls");
  57. cout << " КРЕСТИКИ-НОЛИКИ\n\n 0 1 2" << endl;
  58. for (short i = 0; i < 3; i++)
  59. {
  60. cout << " " << i;
  61. if (i != 0 && res == 0)
  62. {
  63. ch = 0;
  64. cv = 0;
  65. }
  66. for (short j = 0; j < 3; j++)
  67. {
  68. cout << char(124);
  69. if (arr[i][j] != 0)
  70. {
  71. cout << arr[i][j];
  72. }
  73. else
  74. {
  75. cout << " ";
  76. zero = true;
  77. }
  78. cout << char(124);
  79. if (i == 0 && res == 0)
  80. {
  81. if (arr[i][j] == 'X')ch++;
  82. if (arr[i][j] == 'O')ch--;
  83. if (arr[i][j] == 0) bh = j;
  84. if (arr[j][i] == 'X')cv++;
  85. if (arr[j][i] == 'O')cv--;
  86. if (arr[j][i] == 0)bv = j;
  87. if (arr[j][j] == 'X')cd++;
  88. if (arr[j][j] == 'O')cd--;
  89. if (arr[j][j] == 0)bd = j;
  90. if (arr[j][2 - j] == 'X')cr++;
  91. if (arr[j][2 - j] == 'O')cr--;
  92. if (arr[j][2 - j] == 0)br = j;
  93. if (j == 2) {
  94. if (ch == 3) res = 1;
  95. if (ch == -3) res = 2;
  96. if (cv == 3) res = 1;
  97. if (cv == -3) res = 2;
  98. if (cd == 3) res = 1;
  99. if (cd == -3) res = 2;
  100. if (cr == 3) res = 1;
  101. if (cr == -3) res = 2;
  102. if (ai == true && arr[1][1] != 0 && res == 0)
  103. {
  104. if (ch == 2) checkh = i;
  105. if (ch == -2) iwinh = i;
  106. if (cv == 2) checkv = i;
  107. if (cv == -2) iwinv = i;
  108. }
  109. }
  110. }
  111. else if (res == 0)
  112. {
  113. if (arr[i][j] == 'X')ch++;
  114. if (arr[i][j] == 'O')ch--;
  115. if (arr[j][i] == 'X')cv++;
  116. if (arr[j][i] == 'O')cv--;
  117. if (iwinh < 0 && iwinv < 0)
  118. {
  119. if (arr[i][j] == 0) if (checkh < 0)bh = j; else bhr = j;
  120. if (arr[j][i] == 0) if (checkv < 0)bv = j; else bvr = j;
  121. }
  122. if (j == 2)
  123. {
  124. if (ch == 3) res = 1;
  125. if (ch == -3) res = 2;
  126. if (cv == 3) res = 1;
  127. if (cv == -3) res = 2;
  128. if (ai == true && arr[1][1] != 0 && res == 0 && iwinh < 0 && iwinv < 0)
  129. {
  130. if (ch == -2) { iwinh = i; if (checkh > 0)bh = bhr; }
  131. if (cv == -2) { iwinv = i; if (checkv > 0)bv = bvr; }
  132. if (ch == 2 && checkh < 0 && iwinh < 0 && iwinv < 0) checkh = i;
  133. if (cv == 2 && checkv < 0 && iwinh < 0 && iwinv < 0) checkv = i;
  134. }
  135. }
  136. }
  137. }
  138. cout << endl << endl;
  139. }
  140. if (zero == false && res == 0)res = 3;
  141. if (res > 0)
  142. {
  143. if (res == 1)
  144. {
  145. cout << "Ты победил\n";
  146. win++;
  147. results(win, lose);
  148. }
  149. else if (res == 2)
  150. {
  151. cout << "Победил компьютер\n";
  152. lose++;
  153. results(win, lose);
  154. }
  155. else if (res == 3)
  156. {
  157. cout << "Ничья\n";
  158. results(win, lose);
  159. }
  160. break;
  161. }
  162. if (ai == false)
  163. {
  164. do {
  165. cout << "Введите адрес клетки: ";
  166. cin >> a >> b;
  167. } while (arr[a][b] != 0 || a < 0 || b < 0 || a>2 || b>2);
  168. arr[a][b] = 'X';
  169. }
  170. else
  171. {
  172. cout << "Ход компьютера";
  173. Sleep(1000);
  174. if (arr[1][1] == 0)arr[1][1] = 'O';
  175. else if (iwinh >= 0)arr[iwinh][bh] = 'O';
  176. else if (iwinv >= 0)arr[bv][iwinv] = 'O';
  177. else if (cd == -2)arr[bd][bd] = 'O';
  178. else if (cr == -2)arr[br][2 - br] = 'O';
  179. else if (checkh >= 0)arr[checkh][bh] = 'O';
  180. else if (checkv >= 0)arr[bv][checkv] = 'O';
  181. else if (cd == 2)arr[bd][bd] = 'O';
  182. else if (cr == 2)arr[br][2 - br] = 'O';
  183. else
  184. {
  185. do
  186. {
  187. a = rand() % 3;
  188. b = rand() % 3;
  189. } while (arr[a][b] != 0);
  190. arr[a][b] = 'O';
  191. }
  192. }
  193. ai = !ai;
  194. }
  195. cout << "Сыграем ещё? 1-да/0-нет\n";
  196. cin >> ai;
  197. if (ai == 1)
  198. {
  199. for (short i = 0; i < 3; i++)
  200. {
  201. for (short j = 0; j < 3; j++)
  202. {
  203. arr[i][j] = 0;
  204. }
  205. }
  206. }
  207. else break;
  208. }
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement