Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Крестики-нолики.
- #include <iostream>
- #include <ctime>
- using namespace std;
- void out(char** arr, int row, int col)
- {
- for (int i = 0; i < row; i++)
- {
- for (int j = 0; j < col; j++)
- {
- cout << arr[i][j];
- }
- cout << endl;
- }
- }
- void myturn(char** arr)
- {
- int rowMY, colMY;
- int count = 0;
- cout << "Введите номер строки и столбца, куда хотите поставить X: " << endl;
- cin >> rowMY >> colMY;
- while (count == 0)
- {
- if (arr[rowMY - 1][colMY - 1] == '*')
- {
- arr[rowMY - 1][colMY - 1] = 'X';
- count += 1;
- }
- else
- {
- cout << "Вы ввели номер непустой клетки" << endl;
- cout << "Введите номер строки и столбца, куда хотите поставить X: " << endl;
- cin >> rowMY >> colMY;
- }
- }
- count = 0;
- }
- void botturn(char** arr)
- {
- int count = 0;
- int rowBOT = rand() % 3;
- int colBOT = rand() % 3;
- while (count == 0)
- {
- if (arr[rowBOT][colBOT] == '*')
- {
- arr[rowBOT][colBOT] = '0';
- count += 1;
- }
- else
- {
- rowBOT = rand() % 3;
- colBOT = rand() % 3;
- }
- }
- count = 0;
- }
- void checkVictory(char** arr, int* p)
- {
- if (((arr[0][0] == arr[0][1]) && (arr[0][0] == arr[0][2]) && (arr[0][0] != '*'))
- || ((arr[0][0] == arr[1][0]) && (arr[0][0] == arr[2][0]) && (arr[0][0] != '*'))
- || ((arr[0][0] == arr[1][1]) && (arr[0][0] == arr[2][2]) && (arr[0][0] != '*')))
- {
- if (arr[0][0] == '0')
- {
- cout << "Победа бота" << endl;
- cout << "Конец игры" << endl;
- (*p) += 1;
- }
- else
- {
- cout << "Победа игрока" << endl;
- cout << "Конец игры" << endl;
- (*p) += 1;
- }
- }
- if (((arr[2][0] == arr[2][1]) && (arr[2][0] == arr[2][2]) && (arr[2][0] != '*'))
- || ((arr[0][2] == arr[1][1]) && (arr[0][2] == arr[2][0]) && (arr[0][2] != '*')))
- {
- if (arr[2][0] == '0')
- {
- cout << "Победа бота" << endl;
- cout << "Конец игры" << endl;
- (*p) += 1;
- }
- else
- {
- cout << "Победа игрока" << endl;
- cout << "Конец игры" << endl;
- (*p) += 1;
- }
- }
- if (((arr[0][1] == arr[1][1]) && (arr[0][1] == arr[2][1]) && (arr[0][1] != '*'))
- || ((arr[1][0] == arr[1][1]) && (arr[2][0] == arr[1][2]) && (arr[1][0] != '*')))
- {
- if (arr[1][1] == '0')
- {
- cout << "Победа бота" << endl;
- cout << "Конец игры" << endl;
- (*p) += 1;
- }
- else
- {
- cout << "Победа игрока" << endl;
- cout << "Конец игры" << endl;
- (*p) += 1;
- }
- }
- if ((arr[0][3] == arr[1][2]) && (arr[0][2] == arr[2][2]) && (arr[0][2] != '*'))
- {
- if (arr[0][2] == '0')
- {
- cout << "Победа бота" << endl;
- cout << "Конец игры" << endl;
- (*p) += 1;
- }
- else
- {
- cout << "Победа игрока" << endl;
- cout << "Конец игры" << endl;
- (*p) += 1;
- }
- }
- }
- void main()
- {
- setlocale(LC_ALL, "Rus");
- srand(time(NULL));
- int row = 3;//Строки
- int col = 3;//Столбцы
- int p = 0;
- // Создание динамического массива
- char** arr = new char* [row];
- for (int i = 0; i < row; i++)
- {
- arr[i] = new char[col];
- }
- //Заполнение массива звёздочками(Пустыми элементами)
- for (int i = 0; i < row; i++)
- {
- for (int j = 0; j < col; j++)
- arr[i][j] = '*';
- }
- cout << "Игра начинается. Вы ходите первым" << endl;
- out(arr, row, col);
- while (p == 0)
- {
- myturn(arr);
- out(arr, row, col);
- checkVictory(arr, &p);
- cout << " " << endl;
- if (p == 0)
- {
- botturn(arr);
- out(arr, row, col);
- checkVictory(arr, &p);
- cout << " " << endl;
- }
- }
- // Удаление динамического массива:
- for (int i = 0; i < row; i++)
- {
- delete[] arr[i];
- }
- delete[] arr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement