Окончательный ответ зависит от того, как вы визуализируете расположение вашего 2D-дисплея в массиве 1D ('row-first column-last' или 'column-first row-last').
Предполагается, что строка-first '(пиксели вдоль увеличения строки на 1, пиксели вдоль увеличения столбца на ROW_LENGTH):
Сначала используйте некоторые определения, чтобы установить значения для ROW_LENGTH и COL_LENGTH
#define ROW_LENGTH 800
#define COL_LENGTH 600
Затем вы можетелегко отрегулируйте свой размер, если необходимо изменить, не влияя на работу остального кода.
typdef struct point
{
int x;
int y;
}point[ROW_LENGTH*COL_LENGTH];
Позже, соседние точки можно получить с помощью чего-то вроде:
adjacentWest = point[(y*ROW_LENGTH) + (x-1)];
adjacentNorth = point[((y+1)*ROW_LENGTH) + x];
Вам понадобитсячтобы настроить север и юг на +1 или -1 в зависимости от того, находится ли ваш источник в верхнем левом или нижнем левом углу экрана.