Я не проверял приведенный ниже код (и он в любом случае неполон), но вы должны перебрать все элементы в вашем массиве и обновить количество соседей.Вы можете использовать несколько циклов, которые проходят по всем соседним ячейкам и выполняют проверку границ по ходу работы.
Вам также следует сбросить счетчик соседних ячеек, когда вы начнете обрабатывать каждую ячейку.
void newgen()
{
for (int i = 0; i < HEIGHT; i++)
{
for (int j = 0; j < WIDTH; j++)
{
int n = 0;
for (int test_y = i - 1; test_y <= (i + 1); ++test_y)
{
for (int test_x = j - 1; test_x <= (j + 1); ++test_x)
{
if ((test_x != test_y) &&
(test_x >= 0) && (test_x < WIDTH) &&
(test_y >= 0) && (test_y < HEIGHT))
{
if (gb[test_y][test_x])
{
n++;
}
}
}
}
/* Process the n value here */
}
}
}
Возможно, вы могли бы просто использовать статические массивы вместо размещения по одному измерению или по обоим измерениям.В настоящее время это смесь статических и динамических размеров, и это не проблема, это просто кажется несовместимым.
Ваша ошибка Intellisense звучит так, будто Intellisense обрабатывает только код C ++, но не код C, но это только предположение.Вы можете настроить компилятор (я предполагаю, что MSVC здесь) для компиляции как C или C ++, но, возможно, Intellisense либо не имеет этой опции, либо настроен отдельно.