Мне нужно оценить объекты, смежные с моим текущим объектом. Он может быть сверху, снизу, слева и справа от моего текущего положения. Если моя текущая позиция (x, y)
, тогда мои соседние объекты находятся в позициях: (x-1, y)
, (x+1, y)
, (x, y-1)
, (x, y+1)
.
Лучше рассчитать эти 4 позиции, а затем сохранить их в 2D-массиве, обходя их с помощью for... in
l oop:
int[][] adjacentObjects = {
{x-1, y},
{x+1, y},
{x, y-1},
{x, y+1} };
for (int[] adjacent : adjacentObjects) { ...
if (adjacent[0] == ...) // x coordinate
if (adjacent[1] == ...) // y coordinate
Или мне лучше иметь 4 почти идентичных оператора if
? Каждая будет состоять из 4 строк, где единственное различие - координаты x
и y
.
Мое текущее мышление состоит в том, что for... in
l oop чище, хотя и не так читабельно, но я на самом деле не знаю, что «лучше».
Я также подумал об использовании другого метода, в котором я бы передал значения x
и y
, но мне также нужен доступ к еще двум 2D массивы в текущем методе, и кажется бесполезным отправлять их в качестве параметров и в новый метод.
Я использую Java, но я не чувствую, что это c специально для любого один язык. Любая помощь приветствуется!