Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Game(11 laba)
- #include <iostream>
- #include <string>
- #include <Windows.h>
- using namespace std;
- char board[9] = {};
- void clearscreen() /* выводит на экран новые пустые строки, чтобы экран не захламлялся*/
- {
- for (int i = 0; i < 40, i++)
- {
- cout << endl;
- }
- }
- void clearboard() /* очищение и заполнение в начале игры массива с доской */
- {
- for (int i = 0; i < 9, i++)
- {
- board[i] = '-';
- }
- }
- void print_board() /* Переменная используется для смещения доски на середину экрана */
- {
- cout << "Игровая доска:" << endl;
- cout << "-" << board[0] << "-|-" << board[1] << "-|-" << board[2] << "- \n";
- cout << "-" << board[3] << "-|-" << board[4] << "-|-" << board[5] << "- \n";
- cout << "-" << board[6] << "-|-" << board[7] << "-|-" << board[8] << "- \n";
- }
- int get_move() /* получение хода от игрока*/
- {
- cout << "Правила движения: \n";
- cout << "-1-|-2-|-3-" << endl;
- cout << "-4-|-5-|-6-" << endl;
- cout << "-7-|-8-|-9-" << endl;
- cout << "\n";
- print_board();
- cout << "\n Твой ход: ";
- int move;
- cin >> move;
- while (move > 9 || move < 1 || board[move - 1] != '-')
- {
- cout << "Пожалуйста введите коррекны ход (от 1 до 9): \n";
- cin >> move;
- }
- return move;
- }
- bool winner(char player) /* передаем знак игрока Х или 0 */
- {
- 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} };
- for (int i = 0; i < 8; i++)
- {
- int count = 0;
- for (int j = 0; j < 3; j++)
- {
- if (board[wins[i][j]] == player)
- {
- count++;
- }
- }
- if (count == 3)
- {
- return true;
- }
- }
- return false;
- }
- char play_and_get_winner()
- {
- int turn = 1; /* первый ход */
- while (!winner('X') && !winner('0')) /*пока кто-нибудь не выйграет игра продолжается*/
- {
- clearscreen();
- int move = get_move();
- cout << "Ход который вы выбрали: " << move << endl;
- if (turn % 2 == 1)
- {
- board[move - 1] = 'X';
- if (winner('X'))
- {
- cout << "Поздравляю игрок Х! Ты выйграл! \n";
- return 'X';
- }
- }
- else
- {
- board[move - 1] = '0';
- if (winner('0'))
- {
- cout << "Поздравляю игрок 0! Ты выйграл! \n";
- return '0';
- }
- }
- turn++;
- if (turn == 10) /* проверка на ничью */
- {
- cout << "\t Это ничья! \n"; /* горизонтальная табуляция*/
- }
- }
- }
- int main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- clearboard();
- char winner = play_and_get_winner();
- cout << "\nИтоговая расстановки игровой доски: \n";
- print_board(); /* горизонтальная табуляция*/
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment