JAVA基础训练之模拟双色球实现案列

今天介绍一下怎么模拟实现双色球中奖的过程!

游戏中奖规则如图,接下来咱们用java代码小小的实现一下,其实,就分几个步骤。


/**
1.接受用户输入,6红,1蓝
2.随机生成 6红 1蓝
3.比较系统的号码和用户号码,记录个数
4.验证是否中奖
5.公布结果
*/

游戏开始的时候,会让玩家选择是电脑自动生成中奖号码,还是玩家自己选择手动输入中奖号码


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


public class DoubleBall{
	
	public static void main(String[] args){
		
		int[] userRedBall = new int[6];//定义一个存储用户选择红色球号码的数组
		int userBlueBall = 0;//定义一个存储用户蓝色球的变量
		int[] sysRedBall = new int[6];//定义一个系统生成红色球的数组
		int sysBlueBall  =0;//定义一个存储系统生成蓝色球的变量
		int redCount = 0;//累计中奖红球
		int blueCount = 0;//累计中奖蓝球
		int[] redBall = new int[33];//定义一个长度为33的数组,存放红球
		int[] blueBall = new int[13];//定义一个长度为13的数组,存放蓝球
		
		//生成33个红球
		for(int i=0;i<redBall.length;i++){
			redBall[i] = i+1;
		}
		//接受用户输入和生成伪随机数的
		Scanner sc = new Scanner(System.in);
		Random r = new Random();

		System.out.println("双色球游戏开始!");
		
		
		//==================玩家选号开始======================================
userRedBall.length
<userRedBall.length
System.out.println("请问是选择1:机选 2:手选");int choose=sc.nextInt();if(choose==1){//玩家选择用机选...System.out.println("系统为您抽选的红色球号码为 ");int index=-1;for(int i=0;i<userRedBall.length;i++){index=r.nextInt(redBall.length-i);//随机抽选6个红球中的数字下标赋值给index



				userRedBall[i]=redBall[index];//给用户红球数组赋值

		       //把随机抽取到的数和redBall数组里的最后一位数交换,
                    //这样效率最高,每次循环redBall的长度都减一

                      //就保证了下一次循环的时候,不会抽到重复的
//两个数交换的时候,一般会用到第三个变量,也就是temp,这样做比较稳妥,要是不用第三个变量,可以用异或,
// 假设a和b要交换,那就 a=a^b;b=a^b;a=a^b;这样的话,a和b的值就会交换,而且速度要快很多

				int temp=redBall[index];
				redBall[index]=redBall[redBall.length-1-i];
				redBall[redBall.length-1-i]=temp;
				
				System.out.print(userRedBall[i]+"  ");
			}
			System.out.println();
			userBlueBall=r.nextInt(13)+1;
			System.out.println("系统为您抽选的蓝色球号码为: "+userBlueBall);
			//System.out.println();
		}else{
			//手选
			System.out.println("请输入6位红色球号码 (1-33)");
			for(int i=0;i<userRedBall.length;i++){
				userRedBall[i]=sc.nextInt();
			}
			System.out.print("您输入的6位红色球号码为  ");
			for(int i=0;i<userRedBall.length;i++){
				System.out.print(userRedBall[i]+" ");	
			}
			
			System.out.println();
			System.out.println("请输入1位蓝色球号码 (1-13)");
			userBlueBall=sc.nextInt();
			System.out.println("您选择的蓝色球号码为 "+userBlueBall);
		}
		
		
	//==================玩家选号结束======================================	
	
	
	//==================系统随机生成中奖号码开始======================================
			System.out.println("本期红色球中奖号码生成中。。。");
			System.out.println("本期红色球中奖号码为:");
			int index=-1;
			for(int i=0;i<sysRedBall.length;i++){
				index=r.nextInt(redBall.length-i);//把随机到的数字的下标赋值给index
				sysRedBall[i]=redBall[index];//把随机抽取到的数存到系统红球数组里
				//在redBall数组里,把随机到的数和数组最后一位进行交换,这样做的目的就是以最高的效率生成号码
				int temp=redBall[index];
				redBall[index]=redBall[redBall.length-1-i];
				redBall[redBall.length-1-i]=temp;
				
				System.out.print(sysRedBall[i]+"  ");
			}
			System.out.println(" ");
			    sysBlueBall=r.nextInt(13)+1;
			System.out.print("本期蓝色球中奖号码为:"+sysBlueBall);
			System.out.println();
				
			
    //==================系统随机生成中奖号码结束======================================




	//==================统计结果开始======================================
		for(int i=0;i<userRedBall.length;i++){
			for(int j=0;j<sysRedBall.length;j++){
				if(userRedBall[i]==sysRedBall[j]){
					int temp=sysRedBall[j];
					sysRedBall[j]=sysRedBall[sysRedBall.length-1-redCount];
					sysRedBall[sysRedBall.length-1-redCount]=temp;
					redCount++;
				}
			}
		}
		if(sysBlueBall==userBlueBall){
			blueCount=1;
		}
		
	//==================统计结果结束==========================================
	


	
	//==================判断是否中奖开始======================================
		
		if(blueCount==0 && redCount<=3 ){
			System.out.print("没中奖!");
		}else if((blueCount==1)&&redCount<3){
			System.out.print("六等奖:5块!");
		}else if((redCount==3 &&blueCount==1)||(redCount==4 &&blueCount==0)){
			System.out.print("五等奖:10块!");
		}else if((redCount==4 &&blueCount==1)||(redCount==5 &&blueCount==0)){
			System.out.print("四等奖:200块!");
		}else if(redCount==5 &&blueCount==1){
			System.out.print("三等奖:3000块!");
		}else if(redCount==6 &&blueCount==0){
			System.out.print("二等奖:150万!");
		}else if(redCount==6 &&blueCount==1){
			System.out.print("一等奖:500万!");
		}else
			System.out.print("系统错误");
	
	
	//==================判断是否中奖结束======================================
	
运行结果:

双色球游戏开始!
请问是选择1:机选 2:手选
1
系统为您抽选的红色球号码为 
22  6  33  13  5  7  
系统为您抽选的蓝色球号码为: 4
本期红色球中奖号码生成中。。。
本期红色球中奖号码为:
4  14  8  9  12  6   
本期蓝色球中奖号码为:10
没中奖!


最后友情提示:我自己玩了半小时也没中一次奖。。。买这玩意要慎重啊。。。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值