Neon_Falcon

Untitled

Jun 11th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.72 KB | None | 0 0
  1. // Game(11 laba) не доделанная
  2. #include <iostream>
  3. #include <string>
  4. #include <Windows.h>
  5. using namespace std;
  6.  
  7. char board[9] = {};
  8.  
  9. void clearscreen() /* выводит на экран новые пустые строки, чтобы экран не захламлялся*/
  10. {
  11. for (int i = 0; i < 40; i++)
  12. {
  13. cout << endl;
  14. }
  15. }
  16.  
  17. void clearboard() /* очищение и заполнение в начале игры массива с доской */
  18. {
  19. for (int i = 0; i < 9; i++)
  20. {
  21. board[i] = '-';
  22. }
  23. }
  24. void print_board() /* Переменная используется для смещения доски на середину экрана */
  25. {
  26. cout << "Игровая доска:" << endl;
  27. cout << "-" << board[0] << "-|-" << board[1] << "-|-" << board[2] << "- \n";
  28. cout << "-" << board[3] << "-|-" << board[4] << "-|-" << board[5] << "- \n";
  29. cout << "-" << board[6] << "-|-" << board[7] << "-|-" << board[8] << "- \n";
  30. }
  31.  
  32. int get_move() /* получение хода от игрока*/
  33. {
  34.  
  35. cout << "Правила движения: \n";
  36. cout << "-1-|-2-|-3-" << endl;
  37. cout << "-4-|-5-|-6-" << endl;
  38. cout << "-7-|-8-|-9-" << endl;
  39. cout << "\n";
  40.  
  41. print_board();
  42. cout << "\nТвой ход: ";
  43.  
  44. int move;
  45. cin >> move;
  46. while (move > 9 || move < 1 || board[move - 1] != '-')
  47. {
  48. cout << "Пожалуйста введите коррекны ход (от 1 до 9): \n";
  49. cin >> move;
  50. }
  51. return move;
  52. }
  53.  
  54. bool winner(char player) /* передаем знак игрока Х или 0 */
  55. {
  56. int wins[][3] = { {0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7}, {2,5,8}, {0,4,8}, {2,4,6} };
  57. for (int i = 0; i < 8; i++)
  58. {
  59. int count = 0;
  60. for (int j = 0; j < 3; j++)
  61. {
  62. if (board[wins[i][j]] == player)
  63. {
  64. count++;
  65. }
  66.  
  67. }
  68. if (count == 3)
  69. {
  70. return true;
  71. }
  72. }
  73. return false;
  74. }
  75.  
  76. char play_and_get_winner()
  77. {
  78. int turn = 1; /* первый ход */
  79. while (!winner('X') && !winner('0')) /*пока кто-нибудь не выйграет игра продолжается*/
  80. {
  81. clearscreen();
  82. int move = get_move();
  83. clearscreen();
  84. /* cout << "Ход который вы выбрали: " << move << endl; */
  85. if (turn % 2 == 1)
  86. {
  87. board[move - 1] = 'X';
  88. if (winner('X'))
  89. {
  90. cout << "\nПоздравляю игрок Х! Ты выйграл! \n";
  91. return 'X';
  92. }
  93. }
  94. else
  95. {
  96. board[move - 1] = '0';
  97. if (winner('0'))
  98. {
  99. cout << "\nПоздравляю игрок 0! Ты выйграл! \n";
  100. return '0';
  101. }
  102.  
  103. }
  104. turn++;
  105. if (turn == 10) /* проверка на ничью */
  106. {
  107. cout << "\t Это ничья! \n"; /* горизонтальная табуляция*/
  108. return 'D'; /* возвращает рузельтат ничей*/
  109. }
  110. }
  111. }
  112.  
  113.  
  114. int main()
  115. {
  116. SetConsoleCP(1251);
  117. SetConsoleOutputCP(1251);
  118.  
  119. cout << "Добро пожаловать в игру Крестики-Нолики \n\n";
  120. string reply = "Да"; /* декларирует reply=ответ*/
  121. int x_wins = 0, o_wins = 0, ties = 0;
  122. while(reply == "Да")
  123. {
  124. clearboard();
  125. char winner = play_and_get_winner();
  126. print_board();
  127. switch (winner)
  128. {
  129. case 'X':
  130. x_wins++;
  131. break;
  132. case '0':
  133. o_wins++;
  134. break;
  135. case 'D':
  136. ties++;
  137. break;
  138. }
  139. cout << "\n\t*Статистика побед*\nPlayer X: " << x_wins << ", Player O: " << o_wins << ", and Ties: " << ties << "\n\n" ;
  140. cout << "\nХотите сыграть еще раз?(Да/Нет): ";
  141. cin >> reply;
  142. while (reply != "Да" && reply != "Нет")
  143. {
  144. cout << "Пожалуйста введите корректный ответ (Да\Нет): ";
  145. cin >> reply;
  146. }
  147.  
  148. system("pause");
  149. return 0;
  150. }
Advertisement
Add Comment
Please, Sign In to add comment