Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.87 KB | None | 0 0
  1. // Крестики-нолики.
  2.  
  3. #include <iostream>
  4. #include <ctime>
  5.  
  6. using namespace std;
  7.  
  8. void out(char** arr, int row, int col)
  9. {
  10. for (int i = 0; i < row; i++)
  11. {
  12. for (int j = 0; j < col; j++)
  13. {
  14. cout << arr[i][j];
  15. }
  16. cout << endl;
  17. }
  18. }
  19. void myturn(char** arr)
  20. {
  21. int rowMY, colMY;
  22. int count = 0;
  23. cout << "Введите номер строки и столбца, куда хотите поставить X: " << endl;
  24. cin >> rowMY >> colMY;
  25. while (count == 0)
  26. {
  27. if (arr[rowMY - 1][colMY - 1] == '*')
  28. {
  29. arr[rowMY - 1][colMY - 1] = 'X';
  30. count += 1;
  31. }
  32. else
  33. {
  34. cout << "Вы ввели номер непустой клетки" << endl;
  35. cout << "Введите номер строки и столбца, куда хотите поставить X: " << endl;
  36. cin >> rowMY >> colMY;
  37. }
  38. }
  39. count = 0;
  40. }
  41. void botturn(char** arr)
  42. {
  43. int count = 0;
  44. int rowBOT = rand() % 3;
  45. int colBOT = rand() % 3;
  46. while (count == 0)
  47. {
  48. if (arr[rowBOT][colBOT] == '*')
  49. {
  50. arr[rowBOT][colBOT] = '0';
  51. count += 1;
  52. }
  53. else
  54. {
  55. rowBOT = rand() % 3;
  56. colBOT = rand() % 3;
  57. }
  58. }
  59. count = 0;
  60. }
  61. void checkVictory(char** arr, int* p)
  62. {
  63. if (((arr[0][0] == arr[0][1]) && (arr[0][0] == arr[0][2]) && (arr[0][0] != '*'))
  64. || ((arr[0][0] == arr[1][0]) && (arr[0][0] == arr[2][0]) && (arr[0][0] != '*'))
  65. || ((arr[0][0] == arr[1][1]) && (arr[0][0] == arr[2][2]) && (arr[0][0] != '*')))
  66. {
  67. if (arr[0][0] == '0')
  68. {
  69. cout << "Победа бота" << endl;
  70. cout << "Конец игры" << endl;
  71. (*p) += 1;
  72. }
  73. else
  74. {
  75. cout << "Победа игрока" << endl;
  76. cout << "Конец игры" << endl;
  77. (*p) += 1;
  78. }
  79.  
  80. }
  81. if (((arr[2][0] == arr[2][1]) && (arr[2][0] == arr[2][2]) && (arr[2][0] != '*'))
  82. || ((arr[0][2] == arr[1][1]) && (arr[0][2] == arr[2][0]) && (arr[0][2] != '*')))
  83. {
  84. if (arr[2][0] == '0')
  85. {
  86. cout << "Победа бота" << endl;
  87. cout << "Конец игры" << endl;
  88. (*p) += 1;
  89. }
  90. else
  91. {
  92. cout << "Победа игрока" << endl;
  93. cout << "Конец игры" << endl;
  94. (*p) += 1;
  95. }
  96. }
  97. if (((arr[0][1] == arr[1][1]) && (arr[0][1] == arr[2][1]) && (arr[0][1] != '*'))
  98. || ((arr[1][0] == arr[1][1]) && (arr[2][0] == arr[1][2]) && (arr[1][0] != '*')))
  99. {
  100. if (arr[1][1] == '0')
  101. {
  102. cout << "Победа бота" << endl;
  103. cout << "Конец игры" << endl;
  104. (*p) += 1;
  105. }
  106. else
  107. {
  108. cout << "Победа игрока" << endl;
  109. cout << "Конец игры" << endl;
  110. (*p) += 1;
  111. }
  112.  
  113. }
  114. if ((arr[0][3] == arr[1][2]) && (arr[0][2] == arr[2][2]) && (arr[0][2] != '*'))
  115. {
  116. if (arr[0][2] == '0')
  117. {
  118. cout << "Победа бота" << endl;
  119. cout << "Конец игры" << endl;
  120. (*p) += 1;
  121. }
  122. else
  123. {
  124. cout << "Победа игрока" << endl;
  125. cout << "Конец игры" << endl;
  126. (*p) += 1;
  127. }
  128. }
  129. }
  130. void main()
  131. {
  132. setlocale(LC_ALL, "Rus");
  133. srand(time(NULL));
  134. int row = 3;//Строки
  135. int col = 3;//Столбцы
  136. int p = 0;
  137. // Создание динамического массива
  138. char** arr = new char* [row];
  139. for (int i = 0; i < row; i++)
  140. {
  141. arr[i] = new char[col];
  142. }
  143. //Заполнение массива звёздочками(Пустыми элементами)
  144. for (int i = 0; i < row; i++)
  145. {
  146. for (int j = 0; j < col; j++)
  147. arr[i][j] = '*';
  148. }
  149. cout << "Игра начинается. Вы ходите первым" << endl;
  150. out(arr, row, col);
  151. while (p == 0)
  152. {
  153. myturn(arr);
  154. out(arr, row, col);
  155. checkVictory(arr, &p);
  156. cout << " " << endl;
  157. if (p == 0)
  158. {
  159. botturn(arr);
  160. out(arr, row, col);
  161. checkVictory(arr, &p);
  162. cout << " " << endl;
  163. }
  164. }
  165. // Удаление динамического массива:
  166. for (int i = 0; i < row; i++)
  167. {
  168. delete[] arr[i];
  169. }
  170.  
  171. delete[] arr;
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement