У меня 2D-массив как сетка, которую можно считать игровой панелью. Когда плата инициализируется, так что игра запущена, есть четыре человека. Он работает для сетки nxn
. В качестве примерапреобразование из массива 2d в 1d
x o
o x
Я использую 2D-массив. Теперь я пытаюсь преобразовать массив в 1D. Я зациклился на том, как я могу помещать символы в сетку для массива 1D.
for(int i = 0; i < row; ++i)
for(int j = 0; j < col; ++j)
{
//grid[i][j] = '.';
grid[i * col + j] = '.'; // I've converted the part
}
int centerh = row/2;
int centerw = col/2;
// I'm stuck that part.
grid[centerh][centerw] = 'o';
grid[centerh - 1][centerw - 1] = 'o';
grid[centerh][centerw - 1] = 'x';
grid[centerh - 1][centerw] = 'x';
Преобразование такое же, как вы уже сделали в цикле for: 'grid [centerh * col + centerw] = 'o';' – kaylum
Компетентный программист на C++ написал бы функцию доступа, чтобы разрешить доступ 2d к 1d массив. Но внутри или вместо этой функции шаблон, который вы уже использовали в одном месте, должен работать повсюду. Думаю, вы скопировали это первое изменение от кого-то, не понимая этого. Может быть, еще один пример поможет: Измените '[centerh - 1] [centerw - 1]' to '[(centerh - 1) * col + centerw - 1]' – JSF
thank @JSF другая вещь есть какая-то разница между 'grid [ i * col + j] 'и' grid [i * row + j] ', когда массив 2d преобразуется в 1d? – askque