Java——模拟双色球彩票游戏

Java——模拟双色球彩票游戏

一、双色球规则介绍

“双色球”每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1–33中选择;蓝色球号码从1–16中选择。

奖级红色球蓝色球奖金分配说明
红色球号码蓝色球号码
一等奖●●●●●●●当奖池资金低于1亿元时,一等奖奖金总额为当期高奖级奖金的75%与奖池中累积的资金之和,单注奖金按注均分,单注最高限额封顶500万元。当奖池资金高于1亿元(含)时,一等奖奖金总额包括两部分,一部分为当期高奖级奖金的55%与奖池中累积的资金之和,单注奖金按注均分,单注最高限额封顶500万元;另一部分为当期高奖级奖金的20%,单注奖金按注均分,单注最高限额封顶500万元。选6+1中6+1
二等奖●●●●●●二等奖奖金总额为当期高奖级奖金的25%,单注奖金按注均分,单注最高限额封顶500万元。选6+0中6+0
三等奖●●●●●单注奖金额固定为3000元选5+1中5+1
四等奖●●●●●单注奖金额固定为200元选5+0中5+0或4+1中4+1
四等奖●●●●
五等奖●●●●单注奖金额固定为10元选4+0中4+0或中3+1
五等奖●●●
六等奖●●单注奖金额固定为5元选2+1中2+1或1+1中1+1或0+1中0+1
六等奖
六等奖

二、代码实现

import java.util.Random;
import java.util.Scanner;

public class LotteryGame {

	public static void main(String[] args) {
//开奖号码-------------------------------------------------------------------
		//红色球
		int[] redNums = new int[33];
		for(int i=0;i<redNums.length;i++) {
			redNums[i] = i+1;
		}
		//蓝色球
		int[] blueNums = new int[16];
		for(int i=0;i<blueNums.length;i++) {
			blueNums[i] = i+1;
		}
		
		//结果
		int[] redResult = new int[6];
		int blueResult = -1;				//默认为-1,未中奖状态
		
		//随机数
		Random random = new Random();
		
		//抽红球
		int red_count = 0;
		while(red_count<6) {	//抽6次
			int redRandomIndex = random.nextInt(32);	//随机生成的下标
			if(redNums[redRandomIndex] != -1) {
				redResult[red_count++] = redNums[redRandomIndex];
				redNums[redRandomIndex] = -1;
			}
		}
		
		//抽蓝球
		int blue_random = random.nextInt(15);	//随机生成的下标
		blueResult = blueNums[blue_random];
		
		
//用户选择号码-------------------------------------------------------------------		
		int[] userRedNums = new int[6];
		Scanner input = new Scanner(System.in);
		int inputNum=0;
		while(inputNum<6) {
			System.out.println("请输入您选择的红色球第"+(inputNum+1)+"个号码:");
			boolean repeated = false;
			int num = input.nextInt();
			
			//对输入的数的范围进行判断
			if(num<1 || num>33) {
				System.out.println("请输入1~33之间的整数");
				continue;
			}
			
			//查重
			for(int j=0;j<inputNum;j++) {
				if(num == userRedNums[j]) {
					System.out.println("该数字已经输入过,请重新输入:");
					repeated = true;
				}
			}
			if(!repeated) {
				userRedNums[inputNum] = num;
				inputNum++;
			}
		}
		
		int userBlueNum;
		while(true) {
			System.out.println("请输入您选择的蓝色球号码:");
			int num = input.nextInt();
			if(num<1 || num>16) {
				System.out.println("请输入1~16之间的整数");
				continue;
			}
			userBlueNum = num;
			break;
		}
		input.close();
//中奖结果-------------------------------------------------------------------
		//用户输入结果
		System.out.println("============用户输入结果============");
		System.out.println("您选择的红色球号码为:");
		for(int i=0;i<userRedNums.length;i++) {
			System.out.print(userRedNums[i]+"\t");
		}
		System.out.println();
		System.out.println("您选择的蓝色球号码为:");
		System.out.println(userBlueNum);
		
		//开奖结果
		System.out.println("==============开奖结果==============");
		System.out.println("红球开奖结果:");
		for(int i=0;i<redResult.length;i++) {
			System.out.print(redResult[i]+"\t");
		}
		System.out.println();
		System.out.println("蓝球开奖结果:");
		System.out.print(blueResult);
		System.out.println();
		
		//红色球中奖号码个数
		int winningRed = judge(redResult,userRedNums);
		int winningBlue = blueResult==userBlueNum?1:0;
		System.out.println("红色中奖号码个数:" + winningRed);
		
		
		//中奖情况
		System.out.println("==============中奖情况==============");
		if(winningRed==6 && winningBlue==1) {
			System.out.println("恭喜!!!中了一等奖!");
		}else if(winningRed==5 && winningBlue==0) {
			System.out.println("恭喜!!!中了二等奖!");
		}else if(winningRed==5 && winningBlue==1) {
			System.out.println("恭喜!!!中了三等奖!");
		}else if((winningRed==5 && winningBlue==0)||(winningRed==4 && winningBlue==1)) {
			System.out.println("恭喜!!!中了四等奖!");
		}else if((winningRed==4 && winningBlue==0)||(winningRed==3 && winningBlue==1)) {
			System.out.println("恭喜!!!中了五等奖!");
		}else if((winningRed==2 && winningBlue==1)||(winningRed==1 && winningBlue==1)||(winningRed==0 && winningBlue==1)) {
			System.out.println("恭喜!!!中了六等奖!");
		}else {
			System.out.println("很遗憾,您未中奖。");
		}
		
		

	}

	/**
	 * 判断红球的中奖个数
	 * @param redResult
	 * @param userRedNums
	 * @return int
	 */
	private static int judge(int[] redResult, int[] userRedNums) {
		int count=0;	//红球中奖个数
		for(int i=0;i<redResult.length;i++) {
			for(int j=0;j<userRedNums.length;j++) {
				if(userRedNums[j] == redResult[i]) {
					count++;
				}
			}
		}
		return count;
	}

}

三、总结

上述代码最主要应用的Java知识点有Random伪随机数的应用,其他大部分代码相对简单。
总的流程分为了以下三个步骤:

  1. 生成彩票开奖结果并存储
  2. 接收用户选择的号码并存储
  3. 根据比对开奖结果与用户选择的号码判断是否中奖
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生命中有太多不确定

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值