首页 > 编程语言 > 详细

Java抽奖游戏(猜5个数字)GUI版

时间:2021-05-07 23:54:35      阅读:62      评论:0      收藏:0      [点我收藏+]
设计图形界面:编写一个简单的模拟抽奖程序
    程序运行后会随机生成5个1~16幸运号码,然后在图形界面提示“请您抽奖”,
    等待用户输入5个1~16不重复的整数作为抽奖号码。
    开始抽奖后,程序判断用户输入的号码与系统生成的幸运号码是否一致,给出用户中奖结果。
    抽奖规则:如果用户输入的号码中分别有5、4、3个号码与幸运号码一致,则分别判定为一等奖、二等奖、三等奖,否则判定为未中奖。
    要求给出必要的提示信息(如输入号码的数值范围限制)。提供关闭按钮,当用户希望结束抽奖时可以自主退出程序的运行。
package pk_02;

public class Test {
    public static void main(String[] args) {
        GameFrame gameFrame = new GameFrame();
        //设置弹窗在中间显示
        gameFrame.setLocationRelativeTo(null);
    }
}
package pk_02;

import java.util.HashSet;
import java.util.Random;
//	生成5个随机数,通过HashSet原理进行查重
public class LuckyNumber {
    public static HashSet<Integer> makeNumber() {
        HashSet<Integer> hs = new HashSet<Integer>();
        while(hs.size() != 5) {
            Random random = new Random();
            hs.add(random.nextInt(16) + 1);
        }
        return hs;
    }
}
package pk_02;

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

public class GameFrame extends JFrame {
    // 定义组件
    JPanel jp0,jp1, jp2, jp3 ,jp4,jp5,jp6,jp7;
    JLabel jlb0,jlb1, jlb2,jlb3,jlb4,jlb5,jlb6;
    JButton jb1;
    JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;

    // 构造函数
    public GameFrame() {

        jp0 = new JPanel();
        jp1 = new JPanel();
        jp2 = new JPanel();
        jp3 = new JPanel();
        jp4 = new JPanel();
        jp5 = new JPanel();
        jp6 = new JPanel();
        jp7 = new JPanel();

        jlb0 = new JLabel("请输入5个1-16的数字");
        jlb1 = new JLabel("号码1");
        jlb2 = new JLabel("号码2");
        jlb3 = new JLabel("号码3");
        jlb4 = new JLabel("号码4");
        jlb5 = new JLabel("号码5");
        jlb6 = new JLabel("结果");


        jtf1 = new JTextField(10);
        jtf2 = new JTextField(10);
        jtf3 = new JTextField(10);
        jtf4 = new JTextField(10);
        jtf5 = new JTextField(10);
        jtf6 = new JTextField(10);

        jb1 = new JButton("输入完毕,开始抽奖");
        jb1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //先检查5个用户输入的数字,错误就弹窗提示
                HashSet<Integer> userNumber = new HashSet<>();
                userNumber.add(Integer.parseInt(jtf1.getText()));
                userNumber.add(Integer.parseInt(jtf2.getText()));
                userNumber.add(Integer.parseInt(jtf3.getText()));
                userNumber.add(Integer.parseInt(jtf4.getText()));
                userNumber.add(Integer.parseInt(jtf5.getText()));
                if(userNumber.size() < 5) {
                    JOptionPane.showMessageDialog(null,"输入重复数字!","消息提示",JOptionPane.WARNING_MESSAGE);
                }
                else {
                    //拿着数字对照随机数,记录中奖个数
                    int count = 0;
                    HashSet<Integer> hs = LuckyNumber.makeNumber();
                    // 控制台打印每次生成的5个随机数
                    for(Integer z : hs) {
                        System.out.println(z);
                    }
                    System.out.println("-------");
                    for(Integer i : userNumber) {
                        for(Integer j : hs) {
                            if(i.equals(j)) {
                                count ++;
                            }
                        }
                    }
                    //按照中奖个数打印几等奖在结果框上
                    if(count == 5) {
                        jtf6.setText("一等奖");
                    }else if(count == 4) {
                        jtf6.setText("二等奖");
                    }else if(count == 3) {
                        jtf6.setText("三等奖");
                    }else{
                        jtf6.setText("未中奖");
                    }
                }
            }
        });

        this.setLayout(new GridLayout(4, 4,1,1));

        // 加入各个组件
        jp0.add(jlb0);

        jp1.add(jlb1);
        jp1.add(jtf1);

        jp2.add(jlb2);
        jp2.add(jtf2);

        jp3.add(jlb3);
        jp3.add(jtf3);

        jp4.add(jlb4);
        jp4.add(jtf4);

        jp5.add(jlb5);
        jp5.add(jtf5);

        jp6.add(jb1);

        jp7.add(jlb6);
        jp7.add(jtf6);

        // 加入到JFrame
        this.add(jp0);
        this.add(jp1);
        this.add(jp2);
        this.add(jp3);
        this.add(jp4);
        this.add(jp5);
        this.add(jp6);
        this.add(jp7);


        this.setSize(400, 300);
        this.setTitle("抽奖游戏");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
}

运行后效果图
技术分享图片
技术分享图片

Java抽奖游戏(猜5个数字)GUI版

原文:https://www.cnblogs.com/Goodrain7/p/14743068.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!