Как мне найти 2d Array для элемента?

Вам нужно будет создать две отдельные программы: основную программу и класс Battleship. Кто-то еще заставляет основную программу просить пользователя угадать координату, вы можете просто ввести переменные набора, чтобы представить себя как догадку пользователя.

открытый класс MainMethod {

public static void main(String[] args) {

    Battleship_BraydenH_R1 var = new Battleship_BraydenH_R1();

    //initialize variables
    int[][] LAYOUT = new int[7][7];

    int ROW = 1, COLUMN = 2;
    Battleship_BraydenH_R1.hitDetect(ROW, COLUMN);

}

}

открытый класс Battleship_BraydenH_R1 {

 /**
 *Program Header
 *Program Name: Battleship
 *Program Description: This class tells the main method whether or not a ship has been hit or whether or not a ship has been sunk.
 *Program Creator: Brayden H
 *Revision 1
 *Date: May 9, 2016
 */

public static void batClass()
{
    // initialize variables
    int[][] LAYOUT = {
        {0,0,0,1,0,0,0},
        {0,0,1,0,0,0,0},
        {0,1,0,1,0,0,1},
        {1,0,0,1,0,1,0},
        {0,0,0,1,1,0,0},
        {0,0,0,1,0,0,0},
        {0,0,1,0,0,0,0},
    }; // layout array

} // batClass

public static boolean[] hitDetect (int X, int Y)
{
    int[] counter = new int[3];  // counter array
    //counter[0] = boat[0];
    boolean HIT = false, SUNK = false; // sets 'HIT' and 'SUNK' booleans to false
    boolean[] STATUS = new boolean [2]; // array with 2 elements to be able to return 'HIT' and 'SUNK'
    STATUS[0] = false; // MISS
    STATUS[1] = true; // HIT

    // if the user guessed the correct coordinates for boat 1
    if ((X == 3 && Y == 4)||(X == 4 && Y == 4)||(X == 5 && Y == 4))
    {
        STATUS[1] = true; // the boat was hit
        X = 4; // turns 1 into 4 so the program knows when a ship is sunk
        Y = 4; // turns 1 into 4 so the program knows when a ship is sunk
    } // boat 1

    // if the user guessed the correct coordinates for boat 2
    else if ((X == 1 && Y == 4)||(X == 2 && Y == 3)||(X == 3 && Y == 2)||(X == 4 && Y == 1))
    {
        STATUS[1] = true; // the boat was hit
        X = 4; // turns 1 into 4 so the program knows when a ship is sunk
        Y = 4; // turns 1 into 4 so the program knows when a ship is sunk
    } // boat 2

    // if the user guessed the correct coordinates for boat 3
    else if ((X == 3 && Y == 7)||(X == 4 && Y == 6)||(X == 5 && Y == 5)||(X == 6 && Y == 4)||(X == 7 && Y == 3))
    {
        STATUS[1] = true; // the boat was hit
        X = 4; // turns 1 into 4 so the program knows when a ship is sunk
        Y = 4; // turns 1 into 4 so the program knows when a ship is sunk
    } // boat 3

    // if a boat was not hit
    else
    {
        STATUS[1] = false; // the boat was not hit
    }

    (THIS IS WHERE I WANT THE PROGRAM TO SEARCH THE LAYOUT)

    // searches layout
    double a[][]=new double[7][7];
    for(int row = 0 ; row < 3 ; row++)
    {
        for(int col = 0 ; col < 7 ; col++)
        {

        }
    }


    return STATUS; // returns 'STATUS' to main method
} // hitDetect method

} // Класс линкора

1 ответ

Прежде всего мне нужно знать, где находятся корабли в вашей матрице. Впоследствии, учитывая пользовательский ввод, вам нужно будет только найти вашу матрицу, чтобы выяснить, соответствует ли этот ввод какому-либо кораблю.

Допустим, у вас есть корабль на позиции а [3][3]. Лучший способ проверить это - установить содержимое указанной позиции в 1 (при наличии корабля) и в 0 при его отсутствии.

Итак, когда вы получите пользовательское предположение, как: x = 1; у = 4;

Все, что вам нужно, это проверить полученную позицию, чтобы узнать, есть ли у нее 1 (есть корабль) или 0 (нет корабля):

if(a[x][y] == 1) {
   //user guesses correctly
 } else {
   //user found no ship
}
Другие вопросы по тегам