- Carrier (занимает 5 мест)
- Линкор (занимает 4 места)
- Подводная лодка (занимает 3 места)
- Патрульный катер (занимает 2 места)
Я нахожусь на ранних стадиях написания прямо сейчас пишу код и чувствую, что столкнулся с некоторыми проблемами.
- Как эффективно создать экземпляр объекта корабля?
Пока что , такое ощущение, что мне нужно написать 4 разных метода для создания каждого объекта корабля и размещения его на доске - Как мне это сделать чтобы корабли не могли находиться на расстоянии одного квартала друг от друга? (так что корабли не могут касаться друг друга и не могут перекрывать друг друга)
Код: Выделить всё
private void placeCarrier(char[][] selfGrid, int shipOrientation) {
int xCor, yCor;
boolean isShipPlaced = false;
do {
// Randomize starting coordinates
xCor = (int) (Math.random() * 9) + 1;
yCor = (int) (Math.random() * 9) + 1;
// Checking ship orientation and ensuring that the end value is not out of bounds
if (shipOrientation == VERTICAL && yCor + Carrier.CARRIER_LENGTH < BattleshipSystem.GRID_LENGTH) {
playerShips[0] = new Carrier(xCor, yCor, xCor, yCor + Carrier.CARRIER_LENGTH);
// Updates the char array
for (int y = yCor; y < yCor + Carrier.CARRIER_LENGTH; y++) {
selfGrid[y][xCor] = SHIP;
}
isShipPlaced = true;
}
else if (shipOrientation == HORIZONTAL && xCor + Carrier.CARRIER_LENGTH < BattleshipSystem.GRID_LENGTH) {
playerShips[0] = new Carrier(xCor, yCor, xCor + Carrier.CARRIER_LENGTH, yCor);
for (int x = xCor; x < xCor + Carrier.CARRIER_LENGTH; x++) {
selfGrid[yCor][x] = SHIP;
}
isShipPlaced = true;
}
}
while (!isShipPlaced);
// Use of "do-while" loop in order to continuously randomize coordinates until they are valid and in bounds of the grid array
}
Также , я очень обеспокоен, поскольку этот метод и так очень длинный, я не хочу писать несколько методов для каждого типа корабля.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -game-java