今天介绍一下怎么模拟实现双色球中奖的过程!
游戏中奖规则如图,接下来咱们用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.lengthSystem.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
没中奖!
最后友情提示:我自己玩了半小时也没中一次奖。。。买这玩意要慎重啊。。。
本文介绍了一个使用Java实现的双色球中奖模拟程序。该程序允许用户选择手动输入或由系统自动生成彩票号码,并通过比较用户号码与系统生成的中奖号码来判断是否中奖及中奖等级。
170万+





