Я пытаюсь разработать одностороннюю игру «Морской бой», и у меня почти все настроено. Мне нужно только включить массив, который в настоящее время содержит объекты 5, Ships. Класс, который я создал для каждого корабля, называется Ships.java. Раньше у меня были проблемы с инициализацией массива, но это было решено.
Проблема возникает, когда я пытаюсь вытянуть длину корабля (2, 3, 4 или 5) из индекса в массиве. Я не уверен, как концептуально подходить к размещению кораблей.
Мне кажется, я перепробовал все комбинации do-while, циклов for и операторов if. Даже выключатель пробовал.
Цель состоит в том, чтобы компьютер выбирал позиции для пяти кораблей и устанавливал каждую ячейку в сетке (ROWSxCOLS) равной NC_SHIP (не щелкнул, плюс корабль). Проблема заключается в том, чтобы заставить его проверять положение ячеек, смежных со случайным местом на сетке. Также необходимо проверить, подходит ли рассматриваемый корабль (извлечение из кораблей [i] .getShipLength ()).
Вот код, который у меня есть:
int shipsPlaced = 0;
for (int i = 0; i < ships.length; i++)
{
boolean shipPlaced = false;
do
{
int randomRow = (int)(Math.random()*ROWS);
int randomCol = (int)(Math.random()*COLS);
int p = 0;
if (randomRow - ships[p].getShipLength() >= 0 && gameBoard[(randomRow - p)][randomCol] == NC_EMPTY)
{
for (int x = 0; x < ships[x].getShipLength(); x++)
{
gameBoard[(randomRow - x)][randomCol] = NC_SHIP;
shipsPlaced = shipsPlaced + 1;
if (x == ships[x].getShipLength())
{
shipPlaced = true;
p = p + 1;
}
}
}
}while (shipPlaced == false);
}
Все было инициализировано и установлено, если оно не отображается Вот. Проблема заключается в математике / логике, используемой для размещения кораблей в «случайных» местах.