java - 如何比较 Java 中随机生成的图像?

标签 java swingx

所以我正在使用 Swing 用 java 制作一个名为“石头、剪刀、布”的迷你游戏。 enter image description here

如何将我的用户(左)图像与计算机(右)生成的图像进行比较?这样我就可以在中间放一个 JLabel 来说明是否“你赢了!”或“你输了!”或“画画!”?

这是我的代码,我正在尝试弄清楚如何启用图像比较:

btrock.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        user.setIcon(new ImageIcon("ROCK LEFT.PNG"));
        int index = (int) (Math.random() * (images.length - 0));
        computer.setIcon(new ImageIcon(images[index]));
        String blah = new Integer(index).toString();
        if(user.getIcon() == computer.getIcon(images[index])){
            lbl1.setText("DRAW!");
        }
    }
});

最佳答案

对于初学者,您可以使用相应的枚举来映射您的图像。那么您可以轻松地比较手势的值,而不是比较图像。

enum Gesture {ROCK, SCISSOR; PAPER}

Map<Gesture, ImageIcon> leftImages;
Map<Gesture, ImageIcon> rightImages;

Gesture rightGesture;
Gesture leftGesture;

void setLeftGesture(Gesture gesture) {
    leftGesture = gesture;
    setLeftImage(leftImages.get(gesture);
}

//TODO
void setRightGesture(...);

boolean isEqualGesture(){
    return rightGesture == leftGesture;
}

boolean leftWins(){
    return rightGesture == Gesture.ROCK && leftGesture == Gesture.PAPER;
}

//TODO
boolean rightWins(){...}

因此,每当您向左或向右设置手势时,您只需调用上面的这些代码片段即可。

public void actionPerformed(ActionEvent e) {
    //let's assume we are on rocks:
    setLeft(Gesture.ROCK);
    setRight(randomGesture());

    if(isEqualGesture()) {
        //write "draw" in your text box
    }else if(leftWins()){
        //player did win, write a notification
    }else if(rightWins()){
        //computer did win
    }
}

可能的实现

创建 map :

Map<Gesture, ImageIcon> rightImages = new HashMap<>();
ImageIcon rightRock = new ImageIcon...//i don't know that part of your implementations
ImageIcon rightScissor = ...
ImageIcon rightPaper = ...
rightImages.put(Gesture.ROCK, rightRock);
rightImages.put(Gesture.SCISSOR, rightScissor);
rightImages.put(Gesture.PAPER, rightPaper);

这同样适用于左侧图像。 map 的设置应该在应用程序的一开始就进行。这样做的效果是,您仅加载一次图像,并且可以一次又一次重新使用它们。最佳实践是创建一个 init() 方法,您可以在其中执行所有设置操作...

关于java - 如何比较 Java 中随机生成的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58854361/

相关文章:

java - 我的java代码从java文件eclipse中消失

java - springboot 应用程序在 Angular 上出现 fsevents 错误

java - Swing JTable - 根据前一行的功能更改行的背景颜色

java - JXTable 和滚动条上方的标题单元格

java - Jtextfield 中指定格式的日期验证

java - 使用 itext 创建的 pdf 文档的第一页上看不到标题

java - 将使用 this 引用的实例成员函数转换为静态函数

java - 在 Azure Function 中从 C# 执行 java.exe

java - 如何获取双击的TreeTableNode?

java - 在 Netbeans 7.2 中添加 SwingX 调色板