Как решить ошибку переполнения массива?

Делаю игру "Сапер". Столкнулся с проблемой переполнения массива. Начал ограничивать изменения в координатах для счёта мин вокруг клетки.

Получился вот такой код:

int mines = 0;
	const int kDxFirst[] = { 1, 1, 1, 0, 0, -1, -1, -1 };
	const int kDxLast[] = { -1, -1, -1, 0, 0, 1, 1, 1 };
	const int kDy[] = { 1, 0, -1, -1, 1, 0, 1, -1 };

	//if chosen cell is at the end or at the corner
	if (a != 0)
	{
		for (size_t i = 0; i < 8; i++)
		{
			if (field[a + kDxFirst[i]][b + kDy[i]] == char(206))
			{
				mines++;
			}
		}
	}
	else if (a == 0)
	{
		for (size_t i = 0; i < 5; i++)
		{
			if (field[a + kDxFirst[i]][b + kDy[i]] == char(206))
			{
				mines++;
			}
		}
	}
	else if (a == SIZE - 1)
	{
		for (size_t i = 0; i < 5; i++)
		{
			if (field[a + kDxLast[i]][b + kDy[i]] == char(206))
			{
				mines++;
			}
		}
	}


но когда я указываю клетку которая прикасается к нижнему краю программа закрывается и возвращает код -1073741819.

Помогите пожалуйста.
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
@soloveid
Так по куску кода непонятно что происходит.
Для начала замени
if (a != 0)
на
if (a > 0 && a < SIZE - 1 )

И сообщи о результате.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы