Я пытаюсь запрограммировать Minesweeper на Java. В настоящее время я пытаюсь создать х количество уникальных Mines, позиции которых (поскольку POINTS, где x соответствует Row и y в столбце для JavaFX), сохраняются в одномерном массиве. Поэтому я могу вернуть список контроллеру.Добавить уникальные случайные точки в массив
Я мог бы начать и:
- создать все очки, добавьте их в массив, тест каждый пункт с любой другой точкой, перезаписать двойник с новыми точками, тест снова ... , но это кажется ужасно безвкусный.
Моя проблема в том, что когда я проверяю, является ли моя только что созданная точка равным .equal() для каждой точки в массиве Mines [], она генерирует исключение, поскольку массив пуст.
Это новое решение - лучшее, что я придумал до сих пор, но все еще неисправен. Либо некоторые указатели с текущим кодом, либо более элегантный подход были бы замечательными!
Спасибо за помощь
MineNumber = mines;
Mheight = height;
Mwidth = width;
int row;
int column;
int counter = 0;
Point[] Mines = new Point[MineNumber]; //5
Random Rnd = new Random();
boolean create=true;
не догадывается, почему он работает только с -1, но после того, как некоторые пытаются таким образом, что, по крайней мере работает
do {
if (counter < MineNumber - 1) {
row = Rnd.nextInt(Mwidth);
column = Rnd.nextInt(Mheight);
Point p = new Point(row, column);
System.out.println(p); //test
if (counter <= 0) {
Mines[0] = p;
counter++;
} else {
for (int i = 0;i < counter; i++) {
if (Mines[i].equals(p)) {
break;
} else {
Mines[counter] = p;
counter++;
}
}
}
} else {
create = false;
}
} while (create);
System.out.println(Mines[0] + " " + Mines[1] + " " + Mines[2] + " "
+ Mines[3] + " " + Mines[4]);
}
Output:
java.awt.Point[x=3,y=2]
java.awt.Point[x=1,y=8]
java.awt.Point[x=9,y=12]
java.awt.Point[x=3,y=2] java.awt.Point[x=1,y=8] java.awt.Point[x=9,y=12] java.awt.Point[x=9,y=12] null
Есть конкретная проблема, вы испытываете? – Quotidian
Если бы вы могли инициализировать весь массив равным нулю, это исправило бы вашу первоначальную проблему? –
Мое решение не делает то, что я хочу, так как Мины [3] такие же, как Mine [3], а Mine [4] пуст. Когда Minenumber равен 5, и мне интересно, есть ли более элегантные решения для этого. –