我试图制作战舰克隆但最终遇到了一个问题。我创建了一个BattleShipGrid类,它有两个2D数组,每个玩家一个。名为p1 / p2grid的数组保存着他们的船只以及其他玩家射击的位置。名为p1 / p2fire的第二个阵列只显示他们射击的位置,而不是敌舰的位置,尽管他们可以看到他们击中的位置。我有一个问题,我想在他们开火后打印玩家1的火网,以显示他们是否错过了。但是每次我打印玩家1的火网时,它仍然会将所有内容都设置为0,就像他们从未对任何东西开火一样。我做了1个小姐,3个命中,2个代表船的位置。 这是我的主要代码:
boolean player1Turn = true;
if (player1Turn) {
fire = grid.fireAtPlayerTwo(x, y);
} else {
fire = grid.fireAtPlayerOne(x, y);
}
if (fire == 0) {
System.out.println("Miss!");
} else if (fire == 2) {
System.out.println("=====================================");
System.out.println("Hit!");
if (player1Turn) {
System.out.println(grid.printP1Fire());/* printing regular old empty array filled with zeros like when a player just starts and hasn't fired on anything.*/
} else {
System.out.println(grid.printP2Fire());
}
System.out.println("=====================================");
}
这是我在另一个玩家开火时调用的方法(在玩家一中开火,在玩家二开火时做同样的事情,但命名不同):
int Empty = 0;
public int fireAtPlayerTwo ( int x, int y)
{
int result = p2Grid[x][y];
if (result == EMPTY) {
p1Grid[x][y] = MISS;/* This should change the value in p1Grid at that coordinate but it is not refelcting back in the main*/
p2Fire[x][y] = MISS;
} else if (result == SHIP) {
p1Grid[x][y] = HIT;
p2Fire[x][y] = HIT;
}
return result;
}