Я кодирую игру, в которой используется «сетка», которую я создал с использованием 2-мерного массива структур, которые содержат значение char и логическое значение. В файле .h-файла моей программы я объявляю структуру и создаю сетку.Странные символы, появляющиеся в 2D Char Array
struct Tile
{
char letter;
bool active;
};
Tile grid [6][5];
В моем .cpp-файле я инициализирую сетку так, чтобы все значения были пустыми.
for (int i = 0; i < 7; ++i)
{
for (int j = 0; j < 6; ++j)
{
grid[i][j].active == false;
//grid[i][j].letter = '.';
//it always crashes when i try doing the above line
}
}
Функция, которая печатает сетку, printGrid, ниже
for (int i = 0; i < 7; ++i)
{
for (int j = 0; j < 6; ++j)
{
cout << i;
//the above statement is for debugging purposes so that I can see
//which column easier
std::cout << grid[i][j].letter;
}
std::cout << std::endl;
}
cout << "1 2 3 4 5 6" << endl;
Теперь, первоначальная цель была иметь значение быть .letter по умолчанию ''. Но по какой-то причине, когда я пытался это сделать, были катастрофические результаты; экран заполняется персонажами, двигающимися так быстро, что я не могу полностью понять, что они собой представляют (я вспоминаю несколько сердец и смайликов), а также неприятный, быстрый звуковой сигнал. Поэтому я решил оставить эту прокомментированную строку.
Когда я запускаю программу без этой строки, по какой-то причине «сетка» всегда отображает символы в определенных местах, без каких-либо входных данных от пользователя, или без явного объявления каких-либо значений этому месту. Например, пятно 1-го столбца слева и нижнего ряда всегда имеет в нем символ (сетка [6] [5] .letter). Он меняется каждый раз, когда я запускаю программу, и я видел, что она варьируется от сердца, до буквы А, до испанского «n» (того, у кого есть над ним).
Я подумал про себя: «Привет, потому что сетка [6] [5] - это пятна, которые всегда багги, я просто объявляю, что значения этого индивидуального пятна будут пустыми ('')!». Это не сработало.
Я понятия не имею, почему это одно место дает мне проблемы. Были и другие области, которые имели бы ненормальный характер, но я смог нейтрализовать их, установив их. Если кто-нибудь знает, как это исправить, просьба
EDIT: Другие аномальные символы, которые появляются в сетке [6] [0], сетка [6] [1], сетка [6] [5], и сетка [6] [4], все это приведет к сбою моей программы на более поздних этапах, если я установил их в пустые (''); тем не менее, гашение сетки [6] [5] является тем, что заставляет его сбой при получении. Я попытался использовать отладчик, но он не смог сказать мне ничего полезного.
О, боже, я никогда не думал об этом. Это сработало отлично, я никогда не думал, что предел был проблемой, так как 0 учитывалось для 1-го значения. Спасибо. – user3585982