我正在使用2D阵列开发棋盘游戏程序。因为在棋盘游戏中你可以将你的石头放入已经有石头的牢房里。在Java中是否有办法检查索引是否已被占用?例如,
int[][] board = new int[5][5];
我想检查用户或程序是否已选择cell [1][3]
,并使用while循环告诉用户选择另一个未被选中的单元格?
答案 0 :(得分:1)
我将使用布尔属性创建一个对象并使用它创建一个数组。 例如:
public class myField{
private bool chosen = false;
private ...
....
}
用法:
public class main{
private myField[][] board = new myField[5][5];
....
}
检查是否被占用:
if(board[1][3].chosen == true)
{
//doSomething
}
答案 1 :(得分:1)
看看这个小Java样本Chess Applet。它对空方块使用值0
,对边框字段使用1
。这也简化了边界检查。该板的尺寸为10x12。
其他值大致代表材料值 - 白色为正值,黑色为负值。因此,如果两个对手都拥有相同的棋子,则余额为0
。
答案 2 :(得分:1)
Java将对象数组初始化为null,ints为0,浮点数为0.0,booleans为false,因此您可以检查索引是否等于0.即
.btn
答案 3 :(得分:0)
您应该定义一个未使用的单元格,例如:
boolean[][] initMap(int x, int y) {
boolean[][] result = new boolean[x][y];
}
boolean isOccupied(int[][] map, int x, int y) {
return map[x][y];
}
boolean putARock(boolean[][] map, int x, int y) {
if(isOccupied(map)) {
map[x][y] = true;
return true;
} else {
return false;
}
}
/* somewhere in main or GUI code */
boolean[][] map = initMap(x,y);
boolean isPuttingDone = false;
do {
isPuttingDone = putARock(map, getXFromKeyboard(), getYFromKeyboard());
} while (!isPuttingDone);
您必须编写正确的方法来从用户输入中获取X和Y(或者您可以采用不同的方式)。这不是真正的OO代码。