Цель, которую я пытаюсь достичь, - создать сетку кнопок 5х5. Когда вы переключаете кнопку, кнопки, окружающие кнопки, которые вы переключаете, должны переключаться вместе с ней. Вот сетка:
private static final int[][] GRID = {
{4, 5, 6, 7, 0},
{9, 10, 11, 12, 13},
{14, 15, 16, 17, 18},
{19, 20, 21, 22, 23},
{24, 25, 26, 27, 28}
};
Так что, если я нажимаю кнопку 16, мне нужны кнопки 10, 11, 12, 17, 22, 21, 20 и 15, чтобы переключаться вместе с ней. Основная проблема, с которой я столкнулся, заключается в том, что если бы я, скажем, переключил кнопку 4, то с ней должны были активироваться только кнопки 5, 10 и 9, потому что слева и над кнопкой 4 есть «стена». Я был в состоянии сделать это, но моя реализация ужасна:
private void setButtonActivated(Player player, int button) {
player.setButtonActivated(button);
for (int b : getConnectedTiles(button)) {
player.setButtonActivated(b);
}
}
private int[] getConnectedTiles(int button) {
switch (button) {
case 4:
return new int[] { 5, 10, 9 };
case 6:
return new int[] { 5, 10, 11, 12, 7 };
case 16:
return new int[] { 10, 11, 12, 17, 22, 21, 20, 15 };
}
return null;
}
Я хотел бы посмотреть, может ли кто-нибудь предложить идеи для лучшей реализации этого.