Затруднение с заполнением массива
Есть игра - XO.
Есть поле класса fieldSize, определяющее размер игры. Т.е. fieldSize = 4, означает размер игрового поля 4х4.
Пытаюсь заполнить список/массив координатами выигрышных ЛИНИЙ. Для дальнейшего поиска победителя.
Т.е. должно быть, к примеру [[0,0],[0,1],[0,2],[0,3]]. Это для нулевой линии. Линий в итоге 4.
ВОПРОС: как правильно организовать и ВО ЧТО это заполнить? Пока остановился на этом и не знаю/думаю что дальше сделать:
int[][] fillLines(Field field){
int[][] lines = new int[][];
for (int i = 0; i < gameSIZE; i++) {
for (int j = 0; j < gameSIZE; j++) {
<<---------------------------------
}
}
}
Ответы (1 шт):
Думаю, можно организовать класс ячейки, (со своими методами если потребуется). Для доски я бы тоже создавал класс. Логику можно было бы подключать отдельно инверсией зависимостей - тогда можно делать под любую игру где есть поля.
import java.util.*;
public class Game
{
static class Cell {
public int v[] = {0, 0};
public Cell(int x, int y) {
this.v[0] = x;
this.v[1] = y;
}
@Override
public String toString() {
return String.format("[" + v[0] + "," + v[1] + "]");
}
}
public static Cell[][] make(int gameSIZE){
Cell[][] lines = new Cell[gameSIZE][gameSIZE];
for (int i = 0; i < gameSIZE; i++) {
for (int j = 0; j < gameSIZE; j++) {
lines[i][j] = new Cell(i, j);
}
}
return lines;
}
public static void main(String[] args){
Cell[][] f1 = make(2);
Cell[][] f2 = make(4);
System.out.println(Arrays.deepToString(f1));
System.out.println(Arrays.deepToString(f2));
}
}
вывод:
[
[[0,0], [0,1]],
[[1,0], [1,1]]
]
[
[[0,0], [0,1], [0,2], [0,3]],
[[1,0], [1,1], [1,2], [1,3]],
[[2,0], [2,1], [2,2], [2,3]],
[[3,0], [3,1], [3,2], [3,3]]
]