Консольный морской бой на java

1027
05 августа 2017, 03:05

Здравствуйте, пишу примитивную версию морского боя на java. Знаю, тема такая была, но из рассмотренных мною вариантов логику работы так и не понял, поэтому решил писать свой вариант. На данный момент не пойму как в двумерном массиве разместить корабли чтобы они не соприкасались и не перекрывали друг друга. Вот сами классы программы:

public class Runner {
  public static void main(String[] args) {
     Game game = new Game();
     game.startGame();
  }
}

public class Game {
  public void startGame() {
    Cell cell = new Cell();
    cell.fillField();
    cell.viewField();
    cell.autoInitField();//в данном методе не соображу как размещать корабли
    cell.viewField();
  }
}

public class Cell {
   static final int SIZE = 10; // фиксированный размер поля для игры
   char cells[][] = new char[SIZE][SIZE]; // создание поля
   FactoryShip factoryShip = new FactoryShip();
   Ship arrShipOfCell[]; //Данному массиву присвоится массив кораблей 
                         //созданных в классе FactoryShip
public void fillField() {
    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            cells[i][j] = '.';
        }
    }
    System.out.println("");
}
public void viewField() {
    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            System.out.print(cells[i][j] + " ");
        }
        System.out.println("");
    }
    System.out.println("");
}
 void autoInitField() {
    arrShipOfCell = factoryShip.initShip();
    //Не знаю как поместить корабли в cells[][]
 }
}

import java.util.Random;
 public class FactoryShip {
  static final int DECK[] = {1,1,1,1,2,2,2,3,3,4}; // колличество палуб у 
                                                   // кораблей
  Random random = new Random();
  Ship ship;
  Ship arrShips[] = new Ship[10];
  Ship[] initShip(){
     for (int i = 0; i < DECK.length; i++) {
        int tmp = random.nextInt((Cell.SIZE + 1) - DECK[i]);//начальные 
                                         //координаты размещения корабля
        ship = new Ship(DECK[i],tmp,(tmp + i));
        arrShips[i] = ship;
    }
    return arrShips;
  }
}

public class Ship {
 private int deck, xPosition, yPosition;
 Ship(int deck, int x, int y) {
    this.deck = deck;
    this.xPosition = x;
    this.yPosition = y;
 }
 public int getDeck() {
    return deck;
 }
 public int getxPosition() {
    return xPosition;
 }
 public int getyPosition() {
    return yPosition;
 }
}
Answer 1

Можно, допустим, создать многомерный массив(например, если у тебя 16 клеток, то 4 подмассива(1 линия на поле) по 4 элемента(1 клетка на линии)), и пустая клетка 0, а заполненная клетка - 1(2,3,4). Конечно это все очень примитивно.

Например: int userField [16] = {{},{},{},{}} Можно сделать проверку, что-бы рядом с числом больше 0 добавлялся в массив только 0. Ну все, я и так уже много написал, т.к. твой вопрос вообще не соответствует правилам.

READ ALSO
ViewPager+PhotoView

ViewPager+PhotoView

Может быть, кто-нибудь может поделиться готовым классом, в котором совместно работают ViewPager и PhotoView? Ps

287
Ошибка в Selenium: java.lang.NoSuchMethodError: com.google.common.base

Ошибка в Selenium: java.lang.NoSuchMethodError: com.google.common.base

Появляется ошибка при запуске: Exception in thread "main" javalang

415
Как создать библиотеку?

Как создать библиотеку?

У меня есть три "куска" кода - интерфейс, абстрактный класс и классКласс наследует абстрактный класс, а абстрактный класс наследует интерфейс

406
Не работает position:fixed

Не работает position:fixed

Столкнулся с тем что не работает position: fixed, перепробовал уже все, вот код в чем может быть проблема?

546