游戏发送炸弹到char [] []

时间:2014-10-30 08:05:26

标签: java tcp char

我无法弄清楚我在这里做错了什么。这是一个战舰游戏,扔掉炸弹不起作用。炸弹对char [] []中的char做出反应。 +表示船舶,〜表示水,x表示目标已经是炸弹。问题在于,即使我把船放在那里,也没有因水而受到打击。但该计划认为没有船只。 clientDamage是服务器的概述,clientGrid是实际的网格。任何帮助将不胜感激,我不知道我是否只是忽略了一些东西......已经盯着它好几天了。 这是我称之为方法的地方:

if (inFromServer.ready()) {
                    setup(scan, playerNo);
                    System.out.println("\nInput coordinate");
                    int x = scan.nextInt();
                    int y = scan.nextInt();
                    System.out.println(dropBomb(x, y, clientGrid));
                    System.out.println(printBoard(clientGrid));
                    dropBomb(x, y, clientDamage);
                    outToClient.writeChars("Enemy player has targeted " + x + ", " + y +'\n');
                    printBoard(clientDamage);
                }

以下是我对网格进行初始化的方法:

public void initializeGrid(int playerNo) {
        serverGrid = new char[gridSize][gridSize];
        for (int i = 0; i < serverGrid.length; i++) {
            for (int j = 0; j < serverGrid.length; j++) {
                serverGrid[i][j] = '~';
            }
        }
        serverDamage = new char[gridSize][gridSize];
        for (int i = 0; i < serverDamage.length; i++) {
            for (int j = 0; j < serverDamage.length; j++) {
                serverDamage[i][j] = '~';
            }
        }
        clientGrid = new char[gridSize][gridSize];
        for (int i = 0; i < clientGrid.length; i++) {
            for (int j = 0; j < clientGrid.length; j++) {
                clientGrid[i][j] = '~';
            }
        }
        clientDamage = new char[gridSize][gridSize];
        for (int i = 0; i < clientDamage.length; i++) {
            for (int j = 0; j < clientDamage.length; j++) {
                clientDamage[i][j] = '~';
            }
        }
        if (playerNo == 1) {
            System.out.println("\nYour grid (player 1):\n"
                    + printBoard(serverGrid));

        } else if (playerNo == 2) {
            System.out.println("\nYour grid (player 2):\n"
                    + printBoard(clientGrid));
        } else {
            System.out.println("No such player.");
        }
    }

以下是我投下炸弹的方法:

public static String dropBomb(int row, int col, char[][] board) {
        if (row < gridSize && col < gridSize) {
            if (board[row][col] == '+') {
                System.out.println(board[row][col]);
                board[row][col] = 'x';
                bombCount++;
                return "Ship has been hit!";
            }
            if (board[row][col] == 'x') {
                System.out.println(board[row][col]);
                bombCount++;
                return "Already bombed.";
            }
            if (board[row][col] == '~') {
                System.out.println(board[row][col]);
                board[row][col] = 'x';
                bombCount++;
                return "Nothing was hit on this coordinate...";
            }
        } else {
            return "No such coordinate.";
        }
        return "";
    }

这是我部署船只的方式。我知道该方法有效,因为终端显示终端中的位置。

public static void deployShip(char[][] board, Ship ship, char direction,
            int x, int y) {
        if (direction == 'H') {
            if (x < gridSize && y < gridSize) {
                for (int i = 0; i < ship.getSize(); i++) {
                    board[x + i][y] = '+';
                }
                System.out
                        .println("Ship has been placed horizontally on coordinates "
                                + x + ", " + y + ".");
            } else {
                System.out.println("Unable to place ship in this coordinate.");
            }
        } else if (direction == 'V') {
            if (x < gridSize && y < gridSize) {
                for (int i = 0; i < ship.getSize(); i++) {
                    board[x][y + i] = '+';
                }
                System.out
                        .println("Ship has been placed vertically on coordinates "
                                + x + ", " + y + ".");

            } else {
                System.out.println("Unable to place ship in this coordinate.");
            }
        }
    }

0 个答案:

没有答案