объясни пожалуйста как исправить ошибки в данном коде с++:#include <iostream>
#include <time.h>
#include <windows.h>
#include <conio.h>
using namespace std;
const int col = 50;
const int row = 80;
const int f = 5, s = 10, t = 15;
template<int txt = 7, int bg = 0>
ostream& color(ostream& text) {
	HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(hStdOut, (WORD)((bg << 4) | txt));
	return text;
}
int main();
void zamenaf(int k, int** polefmine);
void SetColor(int text, int background) {
	HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(hConsole, background * 16 + text);
}

void outputWithColor(char symbol, int textColor, int backgroundColor) {
	SetColor(textColor, backgroundColor);
	std::cout << symbol;
	SetColor(7, 0); // установка стандартных цветов консоли
}

void timerr() {
	COORD cursor;
	int timer = 0;
	cout << "Время: " << timer << endl;
	while (true)
	{
		cursor.X = 7;
		cursor.Y = 0;
		SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cursor);
		cout << ++timer << endl;
		Sleep(1000);
	}
}
int** openpolef(int k, int** polefmine,int **pole) {
	
	int count = 0;
	for (int i = 0; i < k; i++)
		polefmine[i] = new int[k];
	for (int i = 0; i < k; i++)
		pole[i] = new int[k];
	for (int i = 0; i < f; i++)
		for (int j = 0; j < f; j++)
		{
			if (polefmine[i][j] != 1) {
				if (i != 0 && j != 0) {
					if (polefmine[i - 1][j - 1] == 1)
						count++;
				}
				if (i != k - 1) {
					if (polefmine[i + 1][j] == 1)
						count++;
				}
				if (i != 0) {
					if (polefmine[i - 1][j] == 1)
						count++;
				}
				if (i != 0 && j != k - 1) {
					if (polefmine[i - 1][j + 1] == 1)
						count++;
				}
				if (j != k - 1) {
					if (polefmine[i][j + 1] == 1)
						count++;
				}
				if (i != k - 1 && j != k - 1) {
					if (polefmine[i + 1][j + 1] == 1)
						count++;
				}
				if (j != 0 && i != k - 1) {
					if (polefmine[i + 1][j - 1] == 1)
						count++;
				}
				if (j != 0) {
					if (polefmine[i][j - 1] == 1)
						count++;
				}
				pole[i][j] = count;
				count = 0;
			}
			else {
				pole[i][j] = 9;
			}

		}



	return pole;
}


int** first(int mine, int k, int** polefmine)
{
	HANDLE console_color;
	console_color = GetStdHandle(STD_OUTPUT_HANDLE);
	int countmine = 0, a = 0, b = 0;
	int n, p;
	system("cls");
	for (int i = 0; i < k; i++)
		polefmine[i] = new int[k];

	for (int i = 0; i < k; i++)
		for (int j = 0; j < k; j++)
			polefmine[i][j] = 1;
	while (countmine < mine) {
		a = rand() % k;
		b = rand() % k;
		if (polefmine[a][b] != 0)
		{
			polefmine[a][b] = 0;
			countmine++;
		}

	}
	SetConsoleTextAttribute(console_color, 3);
	cout << "Счётчик мин (пока что не отнимает): ";
	SetConsoleTextAttribute(console_color, 4);
	cout << countmine << endl;
	for (int i = 0; i < k; i++)
		for (int j = 0; j < k; j++) {
			if (polefmine[i][j] == 1)
				polefmine[i][j] = 0;
			else
				polefmine[i][j] = 1;
		}

	for (int i = 0; i < k; i++)
	{
		if (i < 9)
		{
			SetConsoleTextAttribute(console_color, 12);
			cout << i + 1;
			SetConsoleTextAttribute(console_color, 8);
			cout << " |";
		}
		else
		{
			SetConsoleTextAttribute(console_color, 12);
			cout << i + 1;
			SetConsoleTextAttribute(console_color, 8);
			cout << "|";
		}
		for (int j = 0; j < k; j++)
		{
			SetConsoleTextAttribute(console_color, 10);
			cout << (char)219;
			SetConsoleTextAttribute(console_color, 8);
			cout << " |";
		}
		cout << endl;
	}
	cout << "  |";
	for (int i = 0; i < k; i++)
	{
		if (i < 9)
		{
			SetConsoleTextAttribute(console_color, 12);
			cout << i + 1;
			SetConsoleTextAttribute(console_color, 8);
			cout << " |";
		}
		else
		{
			SetConsoleTextAttribute(console_color, 12);
			cout << i + 1;
			SetConsoleTextAttribute(console_color, 8);
			cout << "|";
		}
	}
	cout << endl;
	SetConsoleTextAttribute(console_color, 11);
	int** pole = new int* [k];
	int x, y;
	openpolef(k, polefmine,pole);
	
	HANDLE hin = GetStdHandle(STD_INPUT_HANDLE); // получаем дескриптор
	INPUT_RECORD InputRecord; // используется для возвращения информации о входных сообщениях в консольном входном буфере
	DWORD Events; // unsigned long
	COORD coord; // для координат X, Y
	COORD cursor;

	/*Запретить выделение консоли*/
	DWORD prev_mode;
	GetConsoleMode(hin, &prev_mode);
	SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), ENABLE_EXTENDED_FLAGS | (prev_mode & ~ENABLE_QUICK_EDIT_MODE));

	SetConsoleMode(hin, ENABLE_MOUSE_INPUT); // разрешаем обработку мыши

	while (true)
	{
		ReadConsoleInput(hin, &InputRecord, 1, &Events); // считывание 

		if (InputRecord.Event.MouseEvent.dwButtonState == RIGHTMOST_BUTTON_PRESSED) // правая кнопка
		{
			coord.X = InputRecord.Event.MouseEvent.dwMousePosition.X;
			coord.Y = InputRecord.Event.MouseEvent.dwMousePosition.Y;
			cursor.X = coord.X;
			cursor.Y = coord.Y;
			
				x = ((cursor.X)-1);
				y = ((cursor.Y) / 3) - 1;
				if (polefmine[x - 1][y - 1] == 0) {
					while (pole[x + 1][y] == 0) {
						cursor.X;
						cursor.Y;
						SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cursor);
						cout << (char)220;
						x++;
						y++;
					}
					while (pole[x - 1][y] == 0) {
						cursor.X;
						cursor.Y;
						SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cursor);
						cout << (char)220;
						x--;
						y--;
					}


					while (pole[x][y + 1] == 0) {
						cursor.X;
						cursor.Y;
						SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cursor);
						cout << (char)220;
						x++;
						y++;
					}

					while (pole[x][y - 1] == 0) {
						cursor.X;
						cursor.Y;
						SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cursor);
						cout << (char)220;
						x--;
						y--;
					}

				}
				else
				{
					system("cls");
					SetConsoleTextAttribute(console_color, 12);
					cout << "Вы взорвались от мины! BOOM!" << endl;
					SetConsoleTextAttribute(console_color, 11);
					cout << "Оцените эту игру по шкале от 1 до 5: ";
					cin >> n;
					while (n < 0 || n>5)
					{
						SetConsoleTextAttribute(console_color, 12);
						cout << "Ошибка" << endl;
						SetConsoleTextAttribute(console_color, 11);
						cout << "Оцените эту игру по шкале от 1 до 5: ";
						cin >> a;
					}
					if (a == 5)
					{
						SetConsoleTextAttribute(console_color, 10);
						cout << "Спасибо за оценку, мы рады , что вам понравилось";
					}
					if (n> 1&&n<5)
					{
						SetConsoleTextAttribute(console_color, 14);
						cout << "Спасибо за оценку, мы учтём свои недочёты";
					}
					if (n == 1)
					{
						SetConsoleTextAttribute(console_color, 12);
						cout << "Спасибо за оценку, мы удалим программу";
					}
					system("cls");
					SetConsoleTextAttribute(console_color, 11);
					cout << "Чтобы выйти из игры введите 0; чтобы вернуться в меню введите 1:";
					cin >> p;
					while (p < 0 && p>1)
					{
						SetConsoleTextAttribute(console_color, 12);
						cout << "Ошибка!" << endl;
						SetConsoleTextAttribute(console_color, 11);
						cout << "Чтобы выйти из игры введите 0; чтобы вернуться в меню введите 1:";
						cin >>p;
					}
					if (p == 0)
						system("cls");
					if (p == 1) {
						system("cls");
						main();
					}

				}
			
		}
		
		else if (InputRecord.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) // левая кнопка
		{
			coord.X = InputRecord.Event.MouseEvent.dwMousePosition.X;
			coord.Y = InputRecord.Event.MouseEvent.dwMousePosition.Y;
			cursor.X = coord.X;
			cursor.Y = coord.Y;
			SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cursor);
			cout << (char)205;
		}

	}


	return polefmine;
}

int main()
{
	HANDLE console_color;
	console_color = GetStdHandle(STD_OUTPUT_HANDLE);
	setlocale(LC_ALL, "rus");
	srand(time(NULL));
	int choice, mine, k;
	SetConsoleTextAttribute(console_color, 11);
	cout << "Сапёр - игра-головоломка, где нужно открывать яйчейки, не натыкаясь на мины" << endl;
	SetConsoleTextAttribute(console_color, 13);
	cout << "Обычное двухмерное прямоугольное игровое поле поделено на клетки или другие части, некоторые из которых содержат скрытые мины" << endl;
	SetConsoleTextAttribute(console_color, 14);
	cout << "Игрок должен открывать клетки, стараясь не попасть на мину. Если игрок откроет клетку (или другую область) с миной, игра заканчивается" << endl;
	SetConsoleTextAttribute(console_color, 10);
	cout << "Если же мины нет, то в клетке появляется число, обозначающее количество мин в соседних клетках (в различных вариантах   игры соседство может определяться по-разному)" << endl;
	SetConsoleTextAttribute(console_color, 9);
	cout << "Рассчитав при помощи таких чисел расположение мин, игрок может пометить соответствующие клетки специальной меткой, чтобы случайно не открыть их" << endl << endl;
	SetConsoleTextAttribute(console_color, 12);
	cout << "Нажмите на 'ENTER' для начала игры" << endl;
	_getch();
	system("cls");
	SetConsoleTextAttribute(console_color, 11);
	cout << "Выберите уровень сложности (1- лёгкий уровень; 2-средний уровень; 3-сложный уровень): " << endl;
	cin >> choice;
	while (choice > 3 || choice <= 0)
	{
		SetConsoleTextAttribute(console_color, 12);
		cout << "Ошибка!" << endl;
		SetConsoleTextAttribute(console_color, 11);
		cout << "Введите допустимый уровень сложности: ";
		cin >> choice;
	}
	while (true) {
		switch (choice)
		{
		case 1:
		{
			mine = 10;
			k = f;
			int** polefmine = new int* [k];
			first(mine, k, polefmine);
			break;
		}
		case 2:
		{
			mine = 20;
			k = s;
			int** polefmine = new int* [k];
			first(mine, k, polefmine);
			break;
		}
		case 3:
		{
			mine = 50;
			k = t;
			int** polefmine = new int* [k];
			first(mine, k, polefmine);
			break;
		}
		}
	}
	system("pause");
	return 0;
}