我正在创建自己的记忆游戏。到目前为止,一切进展顺利。只是为了让你知道我正在使用Java处理。我创建了一个2暗淡的PImage数组。这是填充2D数组的代码:
int g = 0;
for(int i = 0; i < 4; i++) {
for (int j = 0; j < 6; j++) {
if (j % 2 == 0) {
kaart[i][j] = loadImage( g + ".jpg" );
kaart[i][j].resize(vlakGrootte - 1, vlakGrootte - 1);
g++;
} else if (j % 2 == 1) {
kaart[i][j] = kaart[i][j-1];
}
}
}
我想要洗牌这个数组中的项目。似乎java集合不支持对2D PImage数组进行洗牌?如果我错了请纠正我。
感谢大家帮助我。
答案 0 :(得分:2)
1) .Shuffle per - outter
索引:
YourType [][] kaart = new YourType [..][..];
List <YourType[]> list = (List<YourType[]> ) Arrays.asList(kaart);
Collections.shuffle(list);
kaart = (YourType[][]) list.toArray(new YourType[0][]);//convert back to a array
// just for checking
for(YourType[] k:kaart ){System.out.println(Arrays.toString(k));}
将YourType
替换为kaart
的类型。
<强> 2)即可。每次随机播放 - Outter+Inner
索引:
YourType[][] kaart = new YourType[..][..];
List<YourType[]> temp = new ArrayList<>();
for(YourType[] k:kaart ){
List <YourType> list = (List<YourType> ) Arrays.asList(k);
Collections.shuffle(list);//shuffle
YourType[] tempArray = (YourType[]) list.toArray();
temp.add(tempArray);
}
Collections.shuffle(temp);
kaart= (YourType[][]) temp.toArray(new YourType[0][]);//convert back to a array
// just for checking
for(YourType[] k:kaart ){System.out.println(Arrays.toString(k)); }
将YourType
替换为kaart
的类型。
第3)即可。在The easiest way
中随机播放:
只需将所有元素放入一个List
,然后调用Collections.shuffle()
答案 1 :(得分:1)
我会像在现实世界中处理这些卡片一样。首先你洗牌:
ArrayList<Integer> pieces = new ArrayList<Integer>();
for (int i = 0; i < 4 * 6 / 2; i++) {
for (int j = 0; j < 2; j++) {
pieces.add(i);
}
}
Collections.shuffle(pieces);
然后你从洗牌后的牌中发牌:
for(int i = 0; i < 4; i++) {
for (int j = 0; j < 6; j++) {
int g = pieces.remove(pieces.size()-1);
kaart[i][j] = loadImage( g + ".jpg" );
kaart[i][j].resize(vlakGrootte - 1, vlakGrootte - 1);
}
}