今天介绍一下怎么模拟实现双色球中奖的过程!
游戏中奖规则如图,接下来咱们用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
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.length
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
没中奖!
最后友情提示:我自己玩了半小时也没中一次奖。。。买这玩意要慎重啊。。。