数组的变化没有反映在程序中?

时间:2017-11-28 08:01:41

标签: java arrays sorting object multidimensional-array

我试图制作战舰克隆但最终遇到了一个问题。我创建了一个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;
    }

0 个答案:

没有答案