Java 如何在数组中洗牌图像图标?

Java 如何在数组中洗牌图像图标?,java,shuffle,Java,Shuffle,我正在尝试编写一个记忆匹配游戏——一种标准类型的注意力集中游戏,玩家可以看到图片卡,它们被翻转,并且必须匹配相应的卡 有几件事让我完全不知所措,我甚至不知道该从哪里开始,如果我能得到一些建议,我会非常感激。我不确定每次重新启动游戏时,我会如何将图像按一系列按钮洗牌。我考虑过制作一个整数矩阵,并分别对数字和图像进行洗牌,但1)我不确定如何洗牌按钮上的图像图标,2)应该匹配的两个数字会有不同的图像 我还考虑过制作一个字符串数组来洗牌ImageIcons的文件名,但我认为这需要重新分配每个单独的图像图

我正在尝试编写一个记忆匹配游戏——一种标准类型的注意力集中游戏,玩家可以看到图片卡,它们被翻转,并且必须匹配相应的卡

有几件事让我完全不知所措,我甚至不知道该从哪里开始,如果我能得到一些建议,我会非常感激。我不确定每次重新启动游戏时,我会如何将图像按一系列按钮洗牌。我考虑过制作一个整数矩阵,并分别对数字和图像进行洗牌,但1)我不确定如何洗牌按钮上的图像图标,2)应该匹配的两个数字会有不同的图像


我还考虑过制作一个字符串数组来洗牌ImageIcons的文件名,但我认为这需要重新分配每个单独的图像图标(有48张卡和24对,这样会占用很多时间)。我能知道如何解决这个问题吗?有没有比我想到的更简单/更有效的解决方案?我知道有一种Fisher-Yates洗牌算法用于纸牌,但我不太明白

使用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;
    }
public ImageIcon[]shuffle(){
字符串[]dicesName={“dice1.png”、“dice2.png”、“dice3.png”、“dice4.png”、“dice5.png”、“dice6.png”};
List dices=Arrays.asList(dicesName);
收集。洗牌(骰子);
ImageIcon[]DiesShuffled=新的ImageIcon[6];
对于(int i=0;i

每次你想洗牌的时候都可以调用这个方法。它返回一个imageIcon无序排列的数组。

因此,我想澄清一下:例如,我可以无序排列文件名的字符串数组,然后使用for循环,在JButton数组中将新的无序排列的文件名实例化为imageIcon?是的。请注意,仅当文件名与主类位于同一目录中时,用于创建ImageIcons的for循环方法才起作用。如果文件名的路径发生更改,我如何确保ImageIcons起作用?它将与我的主类位于同一目录中,但是假设,如果我将整个目录移动到另一台计算机,图像的路径将不同,例如,它将不再是/Desktop/icons/bob.jpg。我需要编辑路径吗?不需要。只需确保您的图像与主类getClass()位于同一文件夹中。getResource(“文件名”);将确保路径正确。如果您曾经将所有图像存储在主类所在文件夹的子文件夹中,这将不起作用。看看getResource()方法。