如何在一个数组中混洗imageIcons?

时间:2016-05-16 00:51:48

标签: java shuffle

我正在尝试编写一个记忆匹配游戏 - 标准类型的集中游戏,其中玩家显示图片卡,他们被翻转,他们必须匹配相应的卡。

有一些事情让我完全不知道我应该从哪里开始,如果我能得到一些建议,我会非常感激。每次重新开始游戏时,我不确定如何在按钮数组中随机播放图像。我考虑制作一个整数矩阵并分别对数字和图像进行混洗,但是1)我不确定如何在一个按钮上混洗ImageIcons,以及2)应该匹配的2个数字会有不同的图像。

我还考虑过制作一个String数组来重新调整ImageIcons的文件名,但我认为这需要重新分配每个单独的图像图标(有48张卡和24对,因此需要花费很多时间)。我能否就如何解决这个问题得到一些想法?有没有比我想象的更容易/更有效的解决方案?我知道有一种用于卡片的Fisher-Yates shuffle算法,但我不太明白。

1 个答案:

答案 0 :(得分:0)

使用Collection类来随机播放数据。例如,您可以随机播放一组骰子,编号从1-6开始,如下所示

public ImageIcon [] shuffle() {
        String [] dicesName = {"dice1.png", "dice2.png", "dice3.png", "dice4.png", "dice5.png", "dice6.png"};
        List<String> dices = Arrays.asList(dicesName);
        Collections.shuffle(dices);

        ImageIcon[] dicesShuffled = new ImageIcon[6];
        for (int i = 0; i < dices.size(); i++) {
            dicesShuffled[i] = new ImageIcon(getClass().getResource(dices.get(i))); 
        }
        return dicesShuffled;
    }

每次想要改变骰子时都可以调用此方法。它返回一个imageIcon shuffled数组。