Как рандомизировать позиции кораблей в игре Battleships?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как рандомизировать позиции кораблей в игре Battleships?

Сообщение Anonymous »

Я пишу игру о линкорах для своего студенческого проекта и хочу рандомизировать позиции кораблей в начале игры. В моей программе есть абстрактный суперкласс Ship, который разветвляется на четыре различных типа других кораблей:
  • 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 ... ships-game
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как рандомизировать позиции кораблей в игре Battleships? (Ява)
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как рандомизировать позиции кораблей в игре Battleships?
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Проблема с подсчетом затонувших кораблей/кораблей линкора (Java)
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как я могу обеспечить последовательную загрузку динамических ссылок в моем веб-приложении Battleships с помощью Spring W
    Гость » » в форуме Jquery
    0 Ответы
    52 Просмотры
    Последнее сообщение Гость
  • Пули стреляют из неправильной позиции после перемещения игрока в небольшой игре «Space Invaders»
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»