我怎样才能更好地实现 5x5 网格按钮拼图的实现,这些按钮使用 2D 数组激活网格上的周围按钮?
How can I better achieve my implementation of a 5x5 grid puzzle of buttons that activate the surrounding buttons on the grid using a 2D Array?
我想要实现的目标是拥有一个 5x5 的按钮网格。当你切换一个按钮时,你切换的按钮周围的按钮应该与它一起切换。这是网格:
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 的左侧和上方有一个 "wall"。我已经能够做到这一点,但我的实现很糟糕:
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;
}
我想看看是否有人可以提供更好地实现它的想法。
您可以减少硬编码:
- 您需要按下按钮的 x|y 位置
- 然后你可以自动按下相邻位置的其他按钮:button(x-1|y-1), button(x-1|y), ...
- 但您必须为 x=0、y=0、x=4、y=4 位置的按钮添加一些例外,这样您就不会尝试按下不存在的按钮
如果需要更多帮助,可以再问我。我以前做过模拟
我想要实现的目标是拥有一个 5x5 的按钮网格。当你切换一个按钮时,你切换的按钮周围的按钮应该与它一起切换。这是网格:
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 的左侧和上方有一个 "wall"。我已经能够做到这一点,但我的实现很糟糕:
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;
}
我想看看是否有人可以提供更好地实现它的想法。
您可以减少硬编码:
- 您需要按下按钮的 x|y 位置
- 然后你可以自动按下相邻位置的其他按钮:button(x-1|y-1), button(x-1|y), ...
- 但您必须为 x=0、y=0、x=4、y=4 位置的按钮添加一些例外,这样您就不会尝试按下不存在的按钮
如果需要更多帮助,可以再问我。我以前做过模拟