ButtonGrid的接近检查器(如雷区游戏)

时间:2013-12-05 16:19:56

标签: java swing methods

我正在为一个寻宝游戏编写一个代码,一个按钮网格,其中一个隐藏它背后的宝藏。我想要一个接近检查器:如果点击按钮触摸按钮,消息后面会显示消息,告诉玩家他在附近。 这是我设法写的但是我总是错误地让数组超出界限(这是因为最后一行和列没有被按钮包围)。

正如你所看到的,我把很多“如果”包含了goig出界的机会,但它一直在发生。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

您可以在此处使用switch-cases

 switch(grid){
   case treasure[x1][y1]:
     // your logic
        break;
     // other cases
   default:
     // default scenario 

 }

答案 1 :(得分:1)

在尝试访问数组之外​​的行之前,需要检查数组的长度。您似乎正在为这样的值太低而执行此操作:

if (y1 < 0){
  y1 = 0;
} 

但是你需要对过高的值进行类似的检查。

可替换地,

如果您只是通过宝藏的X / Y位置,这种设计可以更清洁/更简单。而不是实际的JButtons。然后你可以减去这些值来确定你是否接近。

答案 2 :(得分:0)

我这样做的方法是编写一个函数来检查匹配,检查边界。例如:

private boolean isTreasureAt(int x, int y) {
    if (x<0 || y<0 || x>width || y>height)
       return false;
    return treasure[x][y]; // need your correct checking logic here
}

现在你可以为你喜欢的任何坐标调用isTreasureAt()并且它总是安全的,不需要在代码中的任何地方放置范围检查。