Я работаю над игрой «Морской бой» и пытаюсь создать массив персонажей для игровой доски. Я имею в виду прямоугольный массив angular размером 11x21. Примерно так:
0 1 2 3 4 5 6 7 8 9 10 / 1 2 3 4 5 6 7 8 9 10
1 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
2 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
3 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
4 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
5 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
6 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
7 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
8 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
9 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
10 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
Я пытаюсь создать отдельные массивы позже, отразить историю на этой плате и распечатать ее в файле журнала.
Проблема Сейчас я застрял при инициализации этой платы 11x21. По какой-то причине доска инициализируется вплоть до 6-й строки, т.е. первое значение на игровой доске [6] [0] = 6.
Затем, начиная со строки 7, первое значение на игровой доске [7 ] [0] становится буквой.
Я подозреваю, что буквы были перепутаны с данными, после чего печать стала мусором. Но я не уверен, где именно я ошибся.
Вот оригинальный код:
int i = 0, j = 0;
char gameboard[11][22] = {'\0'};
for (i = 0; i < 11; ++i)
{
gameboard[i][0] = (char)i;
gameboard[i][11] = (char)i;
for (j = 1; j < 11; ++j)
{
gameboard[i][j] = '~';
gameboard[i][j + 11] = '~';
}
}
for (i = 0; i < 11; i++)
{
for (j = 0; j < 22; j++)
printf(" %c", gameboard[i][j]);
printf("\n");
}