Здравствуйте, пишу примитивную версию морского боя на 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;
}
}
Можно, допустим, создать многомерный массив(например, если у тебя 16 клеток, то 4 подмассива(1 линия на поле) по 4 элемента(1 клетка на линии)), и пустая клетка 0, а заполненная клетка - 1(2,3,4). Конечно это все очень примитивно.
Например: int userField [16] = {{},{},{},{}}
Можно сделать проверку, что-бы рядом с числом больше 0 добавлялся в массив только 0. Ну все, я и так уже много написал, т.к. твой вопрос вообще не соответствует правилам.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Может быть, кто-нибудь может поделиться готовым классом, в котором совместно работают ViewPager и PhotoView? Ps
Появляется ошибка при запуске: Exception in thread "main" javalang
У меня есть три "куска" кода - интерфейс, абстрактный класс и классКласс наследует абстрактный класс, а абстрактный класс наследует интерфейс
Столкнулся с тем что не работает position: fixed, перепробовал уже все, вот код в чем может быть проблема?