Я создаю концентрационную игру.Как создать генератор чисел, который будет выбирать только один раз?
У меня есть буферный массив изображений, в котором я загружаю 25 листов спрайтов изображений.
public static BufferedImage[] card = new BufferedImage[25];
0 указатель есть карта задний. и 1 - 24 - значения для лицевой стороны карт, которые нужно проверить, если карты совпадают.
Что я свяжу, чтобы сделать это, у меня будет 4 трудности Легкий, нормальный, жесткий и экстремальный. У каждой сложности будет определенное количество карт, которые нужно будет нарисовать, а затем удвоить количество выбранных. например, уровень по умолчанию будет NORMAL, который составляет 12 совпадений, поэтому ему необходимо случайным образом выбрать 12 уникальных карт из массива Buffered Image, а затем удвоить каждое значение, чтобы у него было только 2 каждой карты, а затем перетасовать результаты.
Это то, что я получил до сих пор, но он всегда имеет дубликаты около 99% времени.
//generate cards
Random r = new Random();
int j = 0;
int[] rowOne = new int[12];
int[] rowTwo = new int[12];
boolean[] rowOneBool = new boolean[12];
for(int i = 0; i < rowOneBool.length; i++)
rowOneBool[i] = false;
for(int i = 0; i < rowOne.length; i++){
int typeId = r.nextInt(12)+1;
while(rowOneBool[typeId]){
typeId = r.nextInt(12)+1;
if(rowOneBool[typeId] == false);
}
rowOne[i] = typeId;
j=0;
}
3 количеств я буду нуждающимися для генерации легка 6, нормальный 12 и 18 Жесткий экстремальные будут использовать все изображения, кроме индекса 0, который является задней частью карты.
Если у вас есть конечное количество изображений, было бы довольно легко создать массив 'boolean' этого размера. Создайте случайное число, если этот индекс является ложным, установите его true и добавьте это изображение. Если это правда, сгенерируйте случайное число замены и продолжайте, пока вы не установите 6/12/18 в true. – nhgrif
то, что я хотел бы сделать, это выбрать случайный индекс, получить номер и изменить его на 0. Затем следующая итерация, если вы получите 0, выберите другой индекс. – Jeeter
Вставьте их в список, перетасуйте его, откройте список до размера списка трудностей, используйте addAll, чтобы добавить новый список в себя, снова перетасовать. – Tonithy