Neon_Falcon

Untitled

Jun 11th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 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. cout << "Ход который вы выбрали: " << move << endl;
  84. if (turn % 2 == 1)
  85. {
  86. board[move - 1] = 'X';
  87. if (winner('X'))
  88. {
  89. cout << "Поздравляю игрок Х! Ты выйграл! \n";
  90. return 'X';
  91. }
  92. }
  93. else
  94. {
  95. board[move - 1] = '0';
  96. if (winner('0'))
  97. {
  98. cout << "Поздравляю игрок 0! Ты выйграл! \n";
  99. return '0';
  100. }
  101.  
  102. }
  103. turn++;
  104. if (turn == 10) /* проверка на ничью */
  105. {
  106. cout << "\t Это ничья! \n"; /* горизонтальная табуляция*/
  107. }
  108. }
  109. }
  110.  
  111.  
  112. int main()
  113. {
  114. SetConsoleCP(1251);
  115. SetConsoleOutputCP(1251);
  116.  
  117. clearboard();
  118. char winner = play_and_get_winner();
  119. cout << "\nИтоговая расстановки игровой доски: \n";
  120. print_board(); /* горизонтальная табуляция*/
  121. system("pause");
  122. return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment