繁体   English   中英

我怎样才能更好地实现使用 2D 阵列激活网格上周围按钮的 5x5 网格按钮拼图?

[英]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 的左侧和上方有一个“墙”。我'已经能够做到这一点,但我的实现很糟糕:

   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 位置的按钮添加一些例外,所以你不要尝试按下不存在的按钮

如果需要更多帮助,你可以再问我。 我以前做过模拟

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM