Java Swing编写的一个猜拳小游戏

2023-10-27

18年在学校时候写的,整理目录发现的,这个游戏当时是模仿一个微信小程序
效果截图:
在这里插入图片描述
里面所用到的四张图片放在百度云:
在这里插入图片描述

链接:https://pan.baidu.com/s/1pnbcOCDpHzA-h2s_56wDWg
提取码:hjvv
代码在此:

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

public class Caiquan {

    public static void main(String[] args) {
        new Thread(new Quansun()).start();
    }

}

class Quansun extends JFrame implements Runnable {
    int x; // 图片循环
    int n = 0; // 获胜次数
    boolean yes;
    JLabel biaoti = new JLabel("你已经获胜0次", JLabel.CENTER);
    JLabel bian = new JLabel();
    JLabel my = new JLabel();
    JLabel xinxi = new JLabel("", JLabel.CENTER); // 结果提示
    JButton bu = new JButton("开始!");

    public Quansun() {
        setTitle("猜拳游戏");
        setSize(399, 650);
        setLocationRelativeTo(null);
        Container con = getContentPane();
        con.setBackground(new Color(250, 236, 56));
        con.setLayout(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        JLabel name = new JLabel("付付付   2018");       //个人信息
        name.setFont(new Font("微软雅黑", Font.LAYOUT_LEFT_TO_RIGHT, 20));
        name.setBounds(95, 565, 199, 30);
        con.add(name);
        biaoti.setFont(new Font("宋体", Font.BOLD, 16));     //成绩
        biaoti.setBounds(75, 15, 232, 22);
        bian.setBounds(35, 55, 90, 90);
        bian.setIcon(new ImageIcon(Caiquan.class.getResource("/1.png")));
        my.setBounds(255, 55, 90, 90);
        my.setIcon(new ImageIcon(Caiquan.class.getResource("/one.png")));
        xinxi.setForeground(Color.RED);
        xinxi.setBounds(135, 55, 120, 90);
        xinxi.setFont(new Font("微软雅黑", Font.LAYOUT_LEFT_TO_RIGHT, 16));
        con.add(bian);
        con.add(biaoti);
        con.add(my);
        con.add(xinxi);
        JPanel pan = new JPanel(null);
        pan.setBackground(new Color(255, 255, 255));
        pan.setBounds(15, 200, 350, 350);
        con.add(pan);
        JLabel boy = new JLabel("出拳吧,骚年", JLabel.CENTER);
        boy.setFont(new Font("宋体", Font.BOLD, 16));
        boy.setBounds(105, 15, 145, 25);
        pan.add(boy);
        JPanel pan2 = new JPanel(new GridLayout(1, 3, 20, 0));
        pan2.setBounds(25, 55, 300, 90);
        pan2.setBackground(new Color(255, 255, 255));
        bu.setFont(new Font("微软雅黑", 666, 22));
        bu.setBackground(new Color(250, 236, 56));
        bu.setBounds(39, 275, 275, 45);
        pan.add(bu);
        pan.add(pan2);
        JButton jd = new JButton();
        JButton st = new JButton();
        JButton b = new JButton();
        jd.setIcon(new ImageIcon(Caiquan.class.getResource("/1.png")));
        st.setIcon(new ImageIcon(Caiquan.class.getResource("/2.png")));
        b.setIcon(new ImageIcon(Caiquan.class.getResource("/3.png")));
        pan2.add(jd);
        pan2.add(st);
        pan2.add(b);

        bu.addActionListener(new ActionListener() { // 开始按钮

            @Override
            public void actionPerformed(ActionEvent e) {
                yes = true;
                my.setIcon(new ImageIcon(Caiquan.class.getResource("/one.png")));
                xinxi.setText("");
            }
        });
        jd.addActionListener(new ActionListener() { // 剪刀

            @Override
            public void actionPerformed(ActionEvent e) {
                if (yes == true) {
                    yes = false;
                    my.setIcon(new ImageIcon(Caiquan.class.getResource("/1.png")));
                    bu.setText("再来!");
                    if (x == 1) {
                        xinxi.setText("打平手了!");
                    } else if (x == 2) {
                        xinxi.setText("你输了!");
                    } else if (x == 3) {
                        xinxi.setText("你赢了!");
                        n++;
                        biaoti.setText("你已经获胜" + n + "次");
                    }
                }
            }
        });
        st.addActionListener(new ActionListener() { // 石头

            @Override
            public void actionPerformed(ActionEvent e) {
                if (yes == true) {
                    yes = false;
                    my.setIcon(new ImageIcon(Caiquan.class.getResource("/2.png")));
                    bu.setText("再来!");
                    if (x == 2) {
                        xinxi.setText("打平手了!");
                    } else if (x == 3) {
                        xinxi.setText("你输了!");
                    } else if (x == 1) {
                        xinxi.setText("你赢了!");
                        n++;
                        biaoti.setText("你已经获胜" + n + "次");
                    }
                }
            }
        });
        b.addActionListener(new ActionListener() { // 布

            @Override
            public void actionPerformed(ActionEvent e) {
                if (yes == true) {
                    yes = false;
                    my.setIcon(new ImageIcon(Caiquan.class.getResource("/3.png")));
                    bu.setText("再来!");
                    if (x == 3) {
                        xinxi.setText("打平手了!");
                    } else if (x == 1) {
                        xinxi.setText("你输了!");
                    } else if (x == 2) {
                        xinxi.setText("你赢了!");
                        n++;
                        biaoti.setText("你已经获胜" + n + "次");
                    }
                }
            }
        });
        setVisible(true);
    }

    public void run() {
        for (; ; ) {
            while (yes) {
                x = new Random().nextInt(3) + 1;
                bian.setIcon(new ImageIcon(Caiquan.class.getResource("/" + x + ".png")));
            }
            try {
                Thread.sleep(125);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

}

注意,图片文件放在resources下面,因为代码是通过getResource()方法获取的(注意里面的/)。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Swing编写的一个猜拳小游戏 的相关文章

  • Java - 为什么不允许 Enum 作为注释成员?

    It says 原始 String Class an Enum 另一个注释 上述任何一个的数组 只有这些类型才是合法的 Annotation 成员 为什么泛型 Enum 不能成为 Annotation 的成员 例如 Retention Re
  • 插入最大日期(独立于数据库)

    在我的本地设置中 我使用一个简单的 H2 数据库 托管 解决方案将有另一个 类似但不相同 数据库 我需要将最大可能日期插入到日期时间列中 我尝试使用 Instant MAX 但是 这会导致列中出现 169104626 12 11 20 08
  • org.apache.sling.api.resource,version=[2.3,3) -- 无法解析

    您好 我无法访问我的项目内容 我已经上传了从 CQ 访问内容所需的所有包 我唯一能看到的是 org apache sling api resource version 2 3 3 无法解析 这是否是异常的原因 如果是 请告诉我如何解决 中Q
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • 如何使用 Java 处理 Selenium WebDriver 中的新窗口?

    这是我的代码 driver findElement By id ImageButton5 click Thread sleep 3000 String winHandleBefore driver getWindowHandle drive
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • wait() 在游戏中如何工作?

    在 playframework 的文档中here http www playframework org documentation 1 2 1 asynchronous已写 public static void loopWithoutBlo
  • JavaFX 中具有自定义内容的 ListView

    How i can make custom ListView with JavaFx for my app I need HBox with image and 2 Labels for each line listView 您可以通过查看
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • 编辑文件名在 JComboBox 中的显示方式,同时保持对文件的访问

    我对 Java 很陌生 对堆栈溢出也很陌生 我正在尝试利用 JMF API 创建一个用 Java 编码的简单媒体播放器 到目前为止 我已经能够设置一个简单的队列 播放列表来使用JComboBox called playListHolder
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • Jersey 客户端请求中未设置 Content-Length-Header

    我正在使用 Jersey Client 访问网络服务 如下所示 response r accept MediaType TEXT PLAIN TYPE header content length 0 post String class 其中
  • java.lang.NumberFormatException: Invalid int: "3546504756",这个错误是什么意思?

    我正在创建一个 Android 应用程序 并且正在从文本文件中读取一些坐标 我在用着Integer parseInt xCoordinateStringFromFile 将 X 坐标转换为整数 Y 坐标的转换方法相同 当我运行该应用程序时
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我

随机推荐