关于Java用界面GUI制作一个人机猜拳小程序

初学GUI,还有很多改进方便请理解
关于人机猜拳小程序也看了不少,但是没有带界面的,于是今天正好有机会就写个一个带界面的猜拳小程序。
大概程序就是 电脑随机产生三个随机数,根据随机数判定出剪刀石头布的内同,人可以自己选择出的内容。为了增加一点小乐趣就决定把最终胜负交给天意了,需要点击电脑产生随机数才会出现结果。
先上布局,使用的是空布局,方便自己调内容位置

package com.hbjc.java1.liang.caiquan;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class CaiQuan {
    public static void main(String[] args) {
        // 窗口
        JFrame caiquan = new JFrame("猜拳");
        caiquan.setSize(700, 550);
        caiquan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        caiquan.setLocation(650, 250);
        JTextField jieguo = new JTextField();
        JLabel diannao = new JLabel("电脑");
        JLabel people = new JLabel("人");
        JLabel tishi = new JLabel("请先选择人要出的内容");
        JLabel jieguotishi = new JLabel("结果是:");
        JLabel bijiao = new JLabel();
        //图片
        Icon jiandaotu = new ImageIcon("src\\com\\hbjc\\java1\\liang\\caiquan\\剪刀.jpg");
        Icon shitoutu = new ImageIcon("src\\com\\hbjc\\java1\\liang\\caiquan\\石头.jpg");
        Icon butu = new ImageIcon("src\\com\\hbjc\\java1\\liang\\caiquan\\布.jpg");
        Icon kongbai = new ImageIcon("src\\com\\hbjc\\java1\\liang\\caiquan\\空白.jpg");
        // 按钮
        JButton wanjia = new JButton("玩家");
        JButton dadiannao = new JButton(kongbai);
        JButton shitou = new JButton("石头");
        JButton jiandao = new JButton("剪刀");
        JButton bu = new JButton("布");
        JButton ok = new JButton("OK");

        //布局
        caiquan.setLayout(null);
        //电脑和人的文本布局
        tishi.setBounds(270, 0, 150, 60);
        diannao.setBounds(70, 20, 50, 50);
        people.setBounds(490, 20, 50, 50);
        //结果提示框
        jieguo.setBounds(295, 420, 80, 20);
        jieguotishi.setBounds(250, 420, 100, 20);
        //电脑和玩家大按钮布局
        dadiannao.setBounds(30, 70, 300, 300);
        wanjia.setBounds(360, 70, 300, 300);
        // 石头剪刀布OK 按钮布局
        shitou.setBounds(420, 400, 60, 40);
        jiandao.setBounds(480, 400, 60, 40);
        bu.setBounds(540, 400, 60, 40);
        ok.setBounds(100, 400, 80, 40);
//        最上边提示布局
        caiquan.add(tishi);
//        电脑和玩家文本提示
        caiquan.add(diannao);
        caiquan.add(people);
//        电脑和玩家按钮
        caiquan.add(dadiannao);
        caiquan.add(wanjia);
//        石头剪刀布OK按钮
        caiquan.add(ok);
        caiquan.add(shitou);
        caiquan.add(jiandao);
        caiquan.add(bu);
        caiquan.setVisible(true);

这里我用到了四张图片 石头剪刀布 三张 还有一张空白给电脑初始用。
而显示图片的大框我选用了按钮,本文就叫大按钮,在人的大按钮下边有三个小按钮,负责的就是人选择出的内容,电脑的下边是个OK键,点击OK会随机产生一张出的内容,然后判断胜负。放张图方便理解!
在这里插入图片描述基本上这就是页面了,然后放监听的代码

// 添加响应
//电脑随机
        class MyAction implements ActionListener {
            @Override
            public void actionPerformed(ActionEvent e) {
                int suiji = (int) (Math.random() * 3 + 1);
                String a = bijiao.getText();
                if (suiji == 1) {
                    dadiannao.setIcon(jiandaotu);
                    if (a.equals("jiandao")) {
                        JOptionPane.showMessageDialog(null, "平局", "结果", JOptionPane.ERROR_MESSAGE);
                    } else if (a.equals("shitou")) {
                        JOptionPane.showMessageDialog(null, "人赢了", "结果", JOptionPane.ERROR_MESSAGE);
                    } else if (a.equals("bu")) {
                        JOptionPane.showMessageDialog(null, "电脑赢了", "结果", JOptionPane.ERROR_MESSAGE);
                    }
                }
                if (suiji == 2) {
                    dadiannao.setIcon(shitoutu);
                    if (a.equals("shitou")) {
                        JOptionPane.showMessageDialog(null, "平局", "结果", JOptionPane.ERROR_MESSAGE);
                    } else if (a.equals("bu")) {
                        JOptionPane.showMessageDialog(null, "人赢了", "结果", JOptionPane.ERROR_MESSAGE);
                    } else if (a.equals("jiandao")) {
                        JOptionPane.showMessageDialog(null, "电脑赢了", "结果", JOptionPane.ERROR_MESSAGE);
                    }
                }
                if (suiji == 3) {
                    dadiannao.setIcon(butu);
                    if (a.equals("bu")) {
                        JOptionPane.showMessageDialog(null, "平局", "结果", JOptionPane.ERROR_MESSAGE);
                    } else if (a.equals("jiandao")) {
                        JOptionPane.showMessageDialog(null, "人赢了", "结果", JOptionPane.ERROR_MESSAGE);
                    } else if (a.equals("shitou")) {
                        JOptionPane.showMessageDialog(null, "电脑赢了", "结果", JOptionPane.ERROR_MESSAGE);
                    }
                }
            }
        }
// 人选择
        class PeopleChoose implements ActionListener {
            @Override
            public void actionPerformed(ActionEvent b) {
                if (b.getSource() == jiandao) {
                    wanjia.setIcon(jiandaotu);
                    bijiao.setText("jiandao");
                } else if (b.getSource() == shitou) {
                    wanjia.setIcon(shitoutu);
                    bijiao.setText("shitou");
                } else if (b.getSource() == bu) {
                    wanjia.setIcon(butu);
                    bijiao.setText("bu");
                }
            }
        }

        //        电脑随机监听
        MyAction m1 = new MyAction();
        ok.addActionListener(m1);
        //        人选择监听
        PeopleChoose p1 = new PeopleChoose();
        jiandao.addActionListener(p1);
        shitou.addActionListener(p1);
        bu.addActionListener(p1);
    }
}

由于我用的是两个class类所以比较时候和写在一个不同。
这里利用了一个文本进行比较,仔细看看可以明白
就是在电脑随机数产生之后,然后判断随机数、判断完了之后和人选择的内容进行比较决出胜负。
这就是这个程序了,边学习,边总结。

  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值