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

来源:互联网 发布:星光网络摄像机 编辑:程序博客网 时间:2024/06/10 04:21

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

游戏中奖规则如图,接下来咱们用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);//把随机到的数字的下标赋值给indexsysRedBall[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万!");}elseSystem.out.print("系统错误");//==================判断是否中奖结束======================================
运行结果:

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


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

0 0
原创粉丝点击