我正在创造一个专注的游戏。
我有一个缓冲图像数组,我在其中加载了 25 个图像精灵表。
public static BufferedImage[] card = new BufferedImage[25];
0 索引是卡片背面。1 - 24 是卡片正面的值,用于检查卡片是否匹配。
我要做的是,我将有 4 个难度,简单、普通、困难和极端。每个难度都会有一定数量的卡片需要绘制,然后将其选择的卡片加倍。例如,默认级别将是 NORMAL,即 12 个匹配项,因此它需要从 Buffered Image 数组中随机选择 12 个唯一卡,然后将每个值加倍,这样每张卡只有 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 个数量是 Easy 6、Normal 12 和 Hard 18extreme 将使用除索引 0(即卡片背面)之外的所有图像。