​ java swing彩票游戏​

news/2024/2/28 10:49:42

模拟双色球彩票的购买、开奖和中奖流程

玩法规则:


1、投注:

  • (1)双色球投注区分为红色球号码区和蓝色球号码区,
  • (2)红色球号码区由1-33共三十三个号码组成,蓝色球号码区由1-16共十六个号码组成。
  • (3)投注时选择6个红色号码和1个蓝色球号码组成。

2、中奖:

  • (1)一等奖:投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖;
  • (2)二等奖:投注号码与当期开奖号码中的6个红色球号码相同,即中奖;
  • (3)三等奖:投注号码与当期开奖号码中的任意5个红色球号码和1个蓝色球号码相同,即中奖;
  • (4)四等奖:投注号码与当期开奖号码中的任意5个红色球号码相同,或与任意4个红色球号码和1个蓝色球号码相同,即中奖;
  • (5)五等奖:投注号码与当期开奖号码中的任意4个红色球号码相同,或与任意3个红色球号码和1个蓝色球号码相同,即中奖;
  • (6)六等奖:投注号码与当期开奖号码中的1个蓝色球号码相同,即中奖。

业务流程:

  • 1、用户购买彩票,分为自选和机选两种
  • 2、根据用户购买的号码和开奖的号码进行中奖对比

效果展示

  • 主界面

  • 自选界面

 

  • 机器帮选界面

  • 示例1:下三注

 

  •  示例2:下一百注


源代码

程序核心:随机号码生成,中奖类型判断
import java.util.Arrays;
import java.util.Random;public class Num_main {public static String[] chooseNumsByMachine() {//红色球号码区由1-33共三十三个号码组成,蓝色球号码区由1-16共十六个号码组成。//因为双色球的号码都是类似于01,12之类的字符串,因此我们创建一个numsPool数组用来存储01~33的值String[] numsPool = {"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33"};//初始化boolean类型的数组numsPoolFlag,默认数值为falseboolean[] numsPoolFlag = new boolean[33] ;//1、进行红球的号码获取//初始化长度为6的String类型的userNums数组用来存储用户选择的红色号码String[] userNums = new String[6];Random random = new Random();//循环数组进行值的输入for(int i = 0; i<userNums.length;i++) {int redNum;while(true) {redNum = random.nextInt(33);if(numsPoolFlag[redNum]) {continue;}break;}//将选中的红色号码赋值给用户数组userNums[i] = numsPool[redNum];//将标志位更改为truenumsPoolFlag[redNum] = true;}// 使用 Arrays.sort() 对现有的六个红球号码进行排序Arrays.sort(userNums);//2、蓝色球号码区由1-16共十六个号码组成//初始化int类型的blueNum作为蓝色球的号码int blueNum = random.nextInt(16);//3、获得蓝球号码后进行红球号码和蓝球号码的拼合//复制userNums数组并将数组的长度设置为7userNums = Arrays.copyOf(userNums, 7);//将userNums数组的最后一位设置为蓝球号码userNums[userNums.length-1] = numsPool[blueNum];return userNums;}public static String isWinningNums(String[] userNums, String[] luckyNums) {/*  (1)一等奖:投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖;(2)二等奖:投注号码与当期开奖号码中的6个红色球号码相同,即中奖;(3)三等奖:投注号码与当期开奖号码中的任意5个红色球号码和1个蓝色球号码相同,即中奖;(4)四等奖:投注号码与当期开奖号码中的任意5个红色球号码相同,或与任意4个红色球号码和1个蓝色球号码相同,即中奖;(5)五等奖:投注号码与当期开奖号码中的任意4个红色球号码相同,或与任意3个红色球号码和1个蓝色球号码相同,即中奖;(6)六等奖:投注号码与当期开奖号码中的1个蓝色球号码相同,即中奖。*///初始化int类型的RedSameCount用来存储红球相同的数量int RedSameCount = 0;//初始化int 类型的isbluesame用来存储蓝球是否相同int isbluesame = 0;//判断相等数量for(int i = 0; i<userNums.length-1;i++) {for(int j = i+1; j<userNums.length-1;j++) {if (userNums[i].equals(luckyNums[j])) {RedSameCount++;}}}if(userNums[6].equals(luckyNums[6])) isbluesame = 1;int wintype;if(RedSameCount==6 && isbluesame==1) {wintype = 1;}else if (RedSameCount==6 && isbluesame==0) {wintype = 2;}else if(RedSameCount==5 && isbluesame==1) {wintype = 3;}else if(RedSameCount==5 || RedSameCount==4 && isbluesame==1) {wintype = 4;}else if(RedSameCount==4 || RedSameCount==3 && isbluesame==1) {wintype = 5;}else if(isbluesame==1) {wintype = 6;}else{ wintype = 0;}String[] award = {"很遗憾,您本次未能中奖!!!","一等奖,奖项是5000万元","二等奖,奖项是1000万元","三等奖,奖项是50万元","四等奖,奖项是2000元", "五等奖,奖项是100元", "六等奖,奖项是5元"};return award [wintype];}
}

彩票系统主界面

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class MyJFrame extends JFrame {public static void main(String[] args) throws AWTException {JFrame jf = new JFrame("彩票售卖机");jf.getContentPane().setBackground(Color.white);jf.setVisible(true);jf.setSize(300, 400);jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);Container container = jf.getContentPane();container.setLayout(null);JLabel label = new JLabel();label.setText("彩票购买系统");label.setForeground(Color.black);//设置字体颜色label.setPreferredSize(new Dimension(100, 55));//设置标签大小label.setHorizontalAlignment(JLabel.CENTER);//设置内容居中对齐label.setFont(new Font("微软雅黑", Font.BOLD, 22));//设置字体大小//label.setBorder(BorderFactory.createLineBorder(Color.black));//设置边框label.setCursor(new Cursor(Cursor.HAND_CURSOR));//设置鼠标样式label.setBounds(60, 30, 160, 60);JButton zx = new JButton("用户自选");        // 创建按钮zx.setFont(new Font("微软雅黑", Font.PLAIN, 13));//设置字体大小zx.setBounds(50, 140, 180, 60);        // 按钮位置及大小zx.addActionListener(new ActionListener() {        // 监听器,用于监听点击事件@Overridepublic void actionPerformed(ActionEvent e) {new JDialogZixuan().setVisible(true);}});JButton jx = new JButton("机器帮选");        // 创建按钮jx.setFont(new Font("微软雅黑", Font.PLAIN, 13));//设置字体大小jx.setBounds(50, 235, 180, 60);        // 按钮位置及大小jx.addActionListener(new ActionListener() {        // 监听器,用于监听点击事件@Overridepublic void actionPerformed(ActionEvent e) {new JDialogJixuan().setVisible(true);}});container.add(zx);container.add(jx);container.add(label);}
}

机选系统投彩和开奖

import javax.swing.*;
import javax.swing.border.MatteBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;class JDialogJixuan extends JDialog {        // 继承JDialog类public JDialogJixuan() {super(new MyJFrame(), "机器帮选系统", true); // 实例化一个JDialog类对象,指定其父窗体、窗口标题和类型this.setSize(450, 250);this.setLocationRelativeTo(null);JPanel panel = new JPanel();panel.setBackground(new Color(255,255,255));
//        panel.setLayout(null);JLabel label = new JLabel();label.setText("请输入你的下注数:");label.setFont(new Font("微软雅黑", Font.BOLD, 15));//设置字体大小panel.add(label);final JTextField xiajizhu = new JTextField(3);xiajizhu.setFont(new Font("宋体", Font.BOLD, 16));MatteBorder border = new MatteBorder(1, 1, 1, 1, new Color(40, 40, 40,120));xiajizhu.setBorder(border);panel.add(xiajizhu);JTextArea machnum = new JTextArea();machnum.setEditable(false);JScrollPane jScrollPane=new JScrollPane(machnum);jScrollPane.setPreferredSize(new Dimension(360,100));jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);jScrollPane.setBorder(border);JLabel label1 = new JLabel();JLabel label2 = new JLabel();JButton btn = new JButton("确认");label1.setText("您的机选号码为:                             ");label1.setHorizontalAlignment(JLabel.CENTER);//设置内容居中对齐label1.setFont(new Font("宋体", Font.BOLD, 16));//设置字体大小btn.setFont(new Font(null, Font.PLAIN, 14));btn.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String[] luckyNums = Num_main.chooseNumsByMachine();StringBuilder sum_userNums = new StringBuilder();StringBuilder winNums= new StringBuilder();String[] userNums;int sum_winNums=0;for (int i = 1; i < Integer.parseInt(xiajizhu.getText())+1; i++) {userNums = Num_main.chooseNumsByMachine();sum_userNums.append("第").append(i).append("组:").append("  ").append(Arrays.toString(userNums)).append("\n");//进行用户双色球号码与中奖双色球号码的对比,判断用户是否中奖String award = Num_main.isWinningNums(userNums, luckyNums);if (award !="很遗憾,您本次未能中奖!!!") {winNums.append("第").append(i).append("组:").append("  ").append("恭喜您获得").append(award).append("\n");sum_winNums=sum_winNums+1;}}if (sum_winNums==0) {JOptionPane.showMessageDialog(null, "很遗憾,您本次未能中奖!!!", "开奖结果", JOptionPane.PLAIN_MESSAGE);}else{JOptionPane.showMessageDialog(null, winNums, "开奖结果", JOptionPane.PLAIN_MESSAGE);}machnum.setText(sum_userNums.toString());machnum.setFont(new Font("宋体", Font.BOLD, 16));//设置字体大小label2.setText("本次中奖号码为:" + Arrays.toString(luckyNums));label2.setHorizontalAlignment(JLabel.CENTER);//设置内容居中对齐label2.setFont(new Font("宋体", Font.BOLD, 16));//设置字体大小}});panel.add(btn);panel.add(label1);panel.add(jScrollPane);panel.add(label2);this.setContentPane(panel);}
}

 自选系统的投彩与开奖

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import javax.swing.*;class JDialogZixuan extends JDialog {        // 继承JDialog类public JDialogZixuan() {super(new MyJFrame(), "用户自选系统", true); // 实例化一个JDialog类对象,指定其父窗体、窗口标题和类型this.setSize(450, 160);this.setLocationRelativeTo(null);JPanel panel = new JPanel();panel.setBackground(new Color(255,255,255));String[] numsPool = {"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33"};String[] numsPool2 = {"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16",};JComboBox combo1 = new JComboBox(numsPool);JComboBox combo2 = new JComboBox(numsPool);JComboBox combo3 = new JComboBox(numsPool);JComboBox combo4 = new JComboBox(numsPool);JComboBox combo5 = new JComboBox(numsPool);JComboBox combo6 = new JComboBox(numsPool);JComboBox combo7 = new JComboBox(numsPool2);combo1.setFont(new Font(null, Font.PLAIN, 15));combo2.setFont(new Font(null, Font.PLAIN, 15));combo3.setFont(new Font(null, Font.PLAIN, 15));combo4.setFont(new Font(null, Font.PLAIN, 15));combo5.setFont(new Font(null, Font.PLAIN, 15));combo6.setFont(new Font(null, Font.PLAIN, 15));combo7.setFont(new Font(null, Font.PLAIN, 15));panel.add(combo1);panel.add(combo2);panel.add(combo3);panel.add(combo4);panel.add(combo5);panel.add(combo6);panel.add(combo7);JLabel label = new JLabel();JLabel label2 = new JLabel();// 创建一个按钮,点击后获取文本框中的文本JButton btn = new JButton("确认");btn.setFont(new Font(null, Font.PLAIN, 14));btn.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {label.setText("你的自选号码为: " + combo1.getSelectedItem()+" "+ combo2.getSelectedItem()+" "+ combo3.getSelectedItem()+" "+ combo4.getSelectedItem()+" "+ combo5.getSelectedItem() +" "+ combo6.getSelectedItem()+" "+ combo7.getSelectedItem());String[] userNums = new String[7];//循环数组进行值的输入userNums[0] = numsPool[Integer.parseInt((String)combo1.getSelectedItem())];userNums[1] = numsPool[Integer.parseInt((String)combo2.getSelectedItem())];userNums[2] = numsPool[Integer.parseInt((String)combo3.getSelectedItem())];userNums[3] = numsPool[Integer.parseInt((String)combo4.getSelectedItem())];userNums[4] = numsPool[Integer.parseInt((String)combo5.getSelectedItem())];userNums[5] = numsPool[Integer.parseInt((String)combo6.getSelectedItem())];userNums[6] = numsPool[Integer.parseInt((String)combo7.getSelectedItem())];Arrays.sort(userNums);label.setHorizontalAlignment(JLabel.CENTER);//设置内容居中对齐label.setFont(new Font("微软雅黑", Font.BOLD, 18));//设置字体大小label.setCursor(new Cursor(Cursor.HAND_CURSOR));//设置鼠标样式//                try { Thread.sleep ( 5000 ) ;
//                } catch (InterruptedException ie){}String[] luckyNums =  Num_main.chooseNumsByMachine();String lyNums = Arrays.toString(luckyNums);lyNums = lyNums.replace(",","");lyNums = lyNums.replace("[","");lyNums = lyNums.replace("]","");label2.setText("本次中奖号码为: "+ lyNums);label2.setHorizontalAlignment(JLabel.CENTER);//设置内容居中对齐label2.setFont(new Font("微软雅黑", Font.BOLD, 18));//设置字体大小label2.setCursor(new Cursor(Cursor.HAND_CURSOR));//设置鼠标样式String award = Num_main.isWinningNums(userNums, luckyNums);JOptionPane.showMessageDialog(null, "恭喜你获得"+award, "开奖结果", JOptionPane.PLAIN_MESSAGE);}});panel.add(btn);panel.add(label);panel.add(label2);this.setContentPane(panel);//}
}

程序下载:Java swing 彩票游戏https://download.csdn.net/download/m0_51499090/85761919

参考文献:用Java代码实现双色球彩票_yrxfight的博客-CSDN博客_java 双色球https://blog.csdn.net/yrxfight/article/details/119873698?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165605941716781685374908%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165605941716781685374908&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~baidu_landing_v2~default-4-119873698-null-null.nonecase&utm_term=%E5%BD%A9%E7%A5%A8java&spm=1018.2226.3001.4450


http://www.ppmy.cn/news/855294.html

相关文章

Java小工具-猜数字游戏(exe版)另附Java文件转exe文件教程

游戏效果&#xff1a; 系统会随机生成一正整数(1~100)&#xff0c;猜测该数字&#xff0c;猜的次数越少&#xff0c;得分越高&#xff0c;6次猜不中,游戏结束。在这之前你将无法退出程序&#xff01; 程序部分截图&#xff1a; 没有很复杂的逻辑&#xff0c;就直接上代码了&am…

java小游戏 : 飞翔的小鸟 (完整版)

前言 飞翔的小鸟 小游戏 可以作为 java入门阶段的收尾作品 &#xff1b; 需要掌握 面向对象的使用以及了解 多线程&#xff0c;IO流&#xff0c;异常处理&#xff0c;一些java基础等相关知识。 一 、游戏分析 1. 分析游戏逻辑 &#xff08;1&#xff09;先让窗口显示出来&a…

java编程练习(开源):十种经典游戏

转自 http://blog.csdn.net/qq_32353771/article/details/53899167 开源Java小游戏 前言 看到标题可能有人要笑我&#xff0c;用Java写游戏?没办法&#xff0c;毕竟无论学什么语言我们都希望它能做出好玩有趣的应用。对于初学者来说&#xff0c;能做出个小游戏玩玩也是很大的学…

javafx/javaFx打砖块游戏【背景音乐、闯关、界面美观】/java项目/java程序设计

javaFx打砖块&#xff1a; 环境&#xff1a;jdk17mavenjavaFx17 一.功能&#xff1a; 主界面 音乐关闭 开启主题界面切换游戏介绍游戏排行版&#xff08;前十名&#xff09; 游戏UI化 加载游戏背景图片加载小球图片加载面板图面加载砖块图片加载砖块裂纹 游戏闯关机制和计分制…

JAVA小游戏(国王和大臣)

棋规则和需求 规则&#xff1a; 棋子&#xff1a;2颗国王棋和&#xff08;816&#xff09;颗大臣棋&#xff1b;分别用黑白两色代表国王和大臣&#xff08;黑子为国王、白子为大臣&#xff09; 棋盘&#xff1a;5*9的二维棋盘&#xff0c;共37个交点&#xff0c;如图所示&…

Java8函数式编程(Lambda表达式)

一、Lambda表达式 Lambda 表达式是一个匿名方法&#xff0c;将行为像数据一样进行传递。Lambda 表达式的常见结构&#xff1a;BinaryOperator<Integer> add (x, y) → x y。函数接口指仅具有单个抽象方法的接口&#xff0c;用来表示 Lambda 表达式的类型。 二、流&am…

day04 重新学python——数据容器

文章目录 一、数据容器1.数据容器&#xff1a;list(列表)2.list(列表)的遍历3.数据容器&#xff1a;tuple(元组)4.数据容器&#xff1a;str(字符串)5.数据容器的切片6.数据容器&#xff1a;set(集合)7.数据容器&#xff1a;dict(字典、映射)8.数据容器的通用操作 一、数据容器 …

【软件】电脑店U盘启动盘v7.01(DIY无广告版)

版本说明&#xff1a;1、这是经过第三方处理的版本&#xff0c;去除了官方原版附带的修改首页、推广软件行为。2、在第三方处理的同时&#xff0c;更新了部分内置软件的程序版本。3、制作完成之后再把U盘格式化成exFAT格式&#xff0c;这样才能放入体积超过4G的文件。4、是先制…

老式计算机如何设置u盘启动,老主板电脑没有USB-HDD如何设置从U盘启动装系统

此文主要是配合《如何不格式化U盘利用grub4dos无损制作U盘启动系统盘》的老电脑启动设置的教程,但也适用于其他U盘启动盘,具体操作如下。 一:启动U盘对没有USB启动选项的老电脑(2002年以前的电脑)的bios设置方法: (没有USB—HDD、USB—ZIP、USB—FDD、USB—CDROM的启动选项…

PyTorch训练简单的全连接神经网络:手写数字识别

文章目录 pytorch 神经网络训练demo输出结果来源 pytorch 神经网络训练demo 数据集&#xff1a;MNIST 该数据集的内容是手写数字识别&#xff0c;其分为两部分&#xff0c;分别含有60000张训练图片和10000张测试图片 神经网络&#xff1a;全连接网络 # Imports import torc…

自制简单U盘引导程序

操作系统实验导航 实验一&#xff1a;银行家算法 https://blog.csdn.net/weixin_46291251/article/details/115384510 实验二&#xff1a;多级队列调度和多级反馈队列调度算法 https://blog.csdn.net/weixin_46291251/article/details/115530582 实验三&#xff1a;动态分区式…

巧设BIOS,让老主板也支持U盘启动!

现在的U盘大都支持启动机器的功能,用U盘做个启动盘,把常用的DOS工具和杀毒软件放在里面,携带方便再也不为一张启动盘而大动干戈来刻录,再也不为只有1.44M的软盘而伤心. 但是现在有些人的主板由于时间和档次原因就不一定都支持U盘启动了(既在BOOT项中找不到USB-ZIP或USB-HDD/FDD…

技嘉服务器主板装系统,技嘉AB350M-DS3H主板u盘重装系统win7教程

技嘉AB350M-DS3H主板采用了AMD B350芯片组&#xff0c;同时还集成了Realtek ALC887 8声道音效芯片&#xff0c;板载Realtek千兆网卡&#xff0c;整体性能还是不错的。另外&#xff0c;这款主板支持AMD Ryzen/第7代A系列/Athlon II/Athlon等处理器。但是关于这款电脑的U盘重装wi…

老式计算机如何设置u盘启动,新旧主板BIOS设置U盘启动详细分析

众所周知&#xff0c;要用U盘装系统&#xff0c;在BIOS设置U盘启动是必不可少的一个步骤。但新旧主板的BIOS设置界面各不相同&#xff0c;这给不太懂英语的电脑小白们装系统造成很大困扰&#xff0c;所以大家需要充充电了。以2010年为分界线&#xff0c;U大侠小编把老式电脑和现…

老式计算机如何设置u盘启动,旧主板bios界面设置U盘启动教程

第一:Phoenix-AwardBIOS(2010年之后的电脑) 1、在开机时不停的按电脑键盘上的DEL键,接着进入下图所示的画面,我们按下键盘的方向键选择“Advanced BIOS Features” 2、通过上面的选择之后,我们按键盘上的ENTER键进入,进入到下图画面,并且按键盘上的方向键选择下图中红色部…

量产 教你如何把U盘做成CD-ROM,以后装机可以不用带光盘和光驱0

昨天没事&#xff0c;试着把自己心爱的2G优盘量产&#xff0c;计划做成一个CD-ROM和一个正常U盘。 步骤如下&#xff1a; 1.分析U盘芯片。采用工具ChipGenius&#xff0c;ChipGenius是一款USB设备芯片型号检测工具&#xff0c;可以自动查询U盘、MP3/MP4、读卡器、移动硬盘等一切…

如何制作U盘启动盘并且安装系统(保姆级教学)

张三寒假回家过年&#xff0c;阿姨问&#xff1a;“张三你在大学学的什么专业呀&#xff1f;” 张三回答&#xff1a;“计算机科学”&#xff0c;阿姨说“那能不能帮阿姨修个电脑呀&#xff01;&#xff0c;阿姨家的电脑系统好像出问题啦。”张三回答“阿姨我学的是软件&#x…

[USB 启动盘_1]-支持 BIOS/UEFI 启动的个人常用必备 PE 系统启动盘制作工具 —— 电脑店装机维护工具套装以及全网最详细的 U 盘启动方式详解

################################################## 目录 获取及使用 U 盘电脑店 PE 系统 为什么需要 PE 系统启动盘 两个官网链接&#xff1f; 解压使用电脑店离线版 如何使用该工具创建电脑店启动盘 关于 USB 启动模式 USB-HDD/USB-HDD/USB-ZIP/USB-ZIP/USB-FDD/USB…

Linux和Shell笔记-1相关概念理解

Unix和Linux关系 UNIX是最早的商业操作系统之一&#xff0c;由贝尔实验室&#xff08;AT&T Bell Laboratories&#xff09;于 1970 年代开发。UNIX 是一个多用户、多任务的操作系统&#xff0c;具有强大的命令行界面和可扩展性。 Linux 是一个开放源代码的类 UNIX 操作系统…
最新文章