java学习第8天,双色球小游戏

1.双色球小游戏

//import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

/*游戏规则:
     投注号码由6个红色球(1-33)和1个蓝色球(1-16),红球不能重复
    一等奖(中奖金额30元):猜中6个红球一个蓝球(6+1)
    二等奖(中奖金额60元):猜中6个红球(6+0)
    三等奖(中奖金额600元):猜中5个红球1个蓝球(5+1)
    四等奖(中奖金额9000元):猜中5个红球(5+0)或者猜中4个红球1个蓝球(4+1)
    五等奖(中奖金额500万元):猜中4个红球(4+0)或者猜中3个红球1个蓝球(3+1)
    六等奖(中奖金额1000万元):猜中红球个数不大于2且猜中一个蓝球(2+1,1+1,0+1)*/

//创建账户充值金额,2游戏币一注,当充值金额大于2块钱即可开始游戏,否则继续充值
//1.随机出七个不重复的号码,前6个范围为1-33,后1个范围为1-16.
//2.客户输入6个不重复红球号码,输入一个篮球号码
//3.将输入的号码与奖池号码对比
//4.打印奖池号码,打印输入号码,打印中奖等级
//5.打印中奖金额,添加到账户余额,开始下一次游戏

public class java1 {
    public static void main(String[] args) {
        //初始充值金额
        Scanner sc=new Scanner(System.in);
        System.out.println("账户余额为:0币 请充值!");
        System.out.print("输入充值金额:");
        int YE=sc.nextInt();//账户余额
        System.out.println("账户余额:"+YE+"币");
        //循环游戏
        while(true) {
            int count=1;
            if (YE >= 2) {
                System.out.println("*************第"+count+"期*************");
                //1.调用get1随机奖池号码
                int[] arr = get1();
                //2.调用get2用户输入号码
                int arr1[] = get2();
                //一个号码2块钱,每次用户游戏就减一次账户余额1*号码个数
                YE=YE-2;
                //3.打印奖池号码
                System.out.print("奖池号码为:");
                for (int i = 0; i < arr.length; i++) {
                    System.out.print(arr[i] + " ");
                }
                //4.打印用户输入号码
                System.out.print("用户输入号码为:");
                for (int i = 0; i < arr1.length; i++) {
                    System.out.print(arr1[i] + " ");
                }
                System.out.println(" ");//换行
                //5.调用get4,将输入号码与奖池号码对比,判断中奖级别
                int JX = get4(arr, arr1);
                //6.把中奖号码放入一个数组
                int[] arr2 = get5(arr, arr1);
                //7.打印中奖号码及结果
                if (JX != 0) {
                    //打印红色中奖号码
                    System.out.print("红球中奖号码为:");
                    for (int i = 0; i < arr.length - 1; i++) {
                        if (arr2[i] != 0) {
                            System.out.print(arr2[i] + " ,");
                        } else {
                            System.out.print("无" + ", ");
                        }
                    }
                    //打印篮球中奖号码
                    System.out.println();
                    System.out.print("蓝球中奖号码为:");
                    if (arr2[arr.length - 1] != 0) {
                        System.out.println(arr2[arr.length - 1]);
                    } else {
                        System.out.print("无");
                    }
                    //打印中奖等级
                    System.out.println("/");
                    System.out.println("获奖等级为:" + JX + "等奖");
                } else {
                    System.out.println("未中奖");
                }
                //8.调用方法get6:判定中奖金额,重新计算账户余额
                int zjje=get6(JX);
                System.out.println("中奖金额为:"+zjje+"币");
                YE=YE+zjje;
                System.out.println("账户余额为:"+YE+"币");
            }else{
                System.out.println("余额:"+YE+"币"+" 余额不足请充值!!!");
                System.out.print("请输入充值游戏币:");
                YE=YE+sc.nextInt();
            }
        }
    }

    //----------------------------------------------------------
    //方法1:随机奖池号码
    public static int[] get1() {
        Random r = new Random();
        int arr[] = new int[7];
        for (int i = 0; i < arr.length - 1; ) { //循环随机六位红球
            int num = r.nextInt(33)+1;
            boolean flag = get1_1(arr, num);//调用方法3判断数组中是否存在与num重复的号码
            if (!flag) {//如果不存在重复,则num存入arr[i]
                arr[i] = num;
                i++;
            }
        }
        int Lnum = r.nextInt(16)+1;//随机篮球
        arr[arr.length - 1] = Lnum;
        //Arrays.sort(arr);
        //将数组从小到大排序
        arr=get1_1(arr);
        return arr;
    }

    //方法1-1:将奖池号码从小到大排列
    public static int[] get1_1(int[] arr) {
        int temp = 0;
        for (int j = 0; j < arr.length - 2; j++) {//交换5次
            for (int i = 0; i < arr.length - 2; i++) {//比对5次
                if (arr[i] > arr[i + 1]) {
                    temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
        }
        return arr;
    }

    //----------------------------------------------------------
    //方法2.用户输入号码
    public static int[] get2() {
        Scanner sc = new Scanner(System.in);
        int[] arr1 = new int[7];
        for (int i = 0; i < arr1.length - 1; ) {//用户输入前六位红球号码
            System.out.print("请输入第" + (i + 1) + "个号码(1-33):");
            int num = sc.nextInt();
            if (num >= 1 && num <= 33) {//前六个号码,如果在1-33之间就输入成功,如果不是则输入错误重新输入
                if (!get2_1(arr1, num)) {//如果不存在重复就存入数组
                    arr1[i] = num;
                    i++;
                } else {
                    System.out.println("号码输入重复请重新输入(1-33)");
                }
            } else {
                System.out.println("号码输入错误请重新输入(1-33)");
            }
        }
        System.out.print("请输入第" + (arr1.length) + "个号码(1-16):");
        for (int i = 0; i < 1; ) {//用户输入篮球号码
            int num = sc.nextInt();
            if (num >= 1 && num <= 16) {
                arr1[arr1.length - 1] = num;
                i++;
            } else {
                System.out.println("号码输入错误请重新输入(1-16)");
            }
        }
        return arr1;//返回数组
    }

    //方法2_1:判断客户输入的红球是否有重复
    public static boolean get2_1(int arr[], int num) {
        for (int i = 0; i < arr.length - 1; i++) {
            if (arr[i] == num) {
                return true;
            }
        }
        return false;
    }


    //----------------------------------------------------------
    //方法1-1:判断奖池数组中有没有重复号码
    public static boolean get1_1(int arr[], int num) {
        boolean flag = false;
        for (int i = 0; i < arr.length - 1; i++) {
            if (arr[i] == num) {
                return true;
            }
        }
        return false;
    }

    //----------------------------------------------------------
    //方法4:输入号码与奖池号码比对
    public static int get4(int[] arr, int[] arr1) {
        int JX = 0;//定义几等奖
        int redCounter = 0;//记录红球中奖个数
        int bluCounter = 0;//记录篮球中奖个数
        for (int i = 0; i < arr.length - 1; i++) {//循环判断红球中奖个数
            int num = arr1[i];
            if (get2_1(arr, num)) {//调用get2_1判断红球中奖个数
                redCounter++;
            }
        }
        if (arr[arr.length - 1] == arr1[arr1.length - 1]) {//循环判断篮球中奖个数
            bluCounter++;
        }
        if (bluCounter == 1 && (redCounter == 1 || redCounter == 0)) {//根据中奖个数判断最终得奖级别
            JX = 6;
        }
        if (bluCounter == 1 && (redCounter == 2 || redCounter == 3)) {
            JX = 5;
        }
        if ((bluCounter == 1 && redCounter == 4) || (bluCounter == 0 && (redCounter == 4 || redCounter == 5))) {
            JX = 4;
        }
        if (bluCounter == 1 && redCounter == 5) {
            JX = 3;
        }
        if (bluCounter == 0 && redCounter == 6) {
            JX = 2;
        }
        if (bluCounter == 1 && redCounter == 6) {
            JX = 1;
        }
        return JX;//将中奖级别返回给get4
    }

    //----------------------------------------------------------
    //方法5;记录中奖号码
/*    public static int[] get5(int[] arr, int[] arr1) {//arr奖池,arr1用户号码
        int []arr2 = new int[arr.length];//定义中奖号码数组
        int redCounter = 0;//记录红球中奖个数
        int bluCounter = 0;//记录篮球中奖个数
        for (int i = 0; i < arr.length - 1; i++) {//循环判断红球中奖个数
            int num = arr1[i];
            if (get2_1(arr, num)) {//调用get2_1判断红球中奖个数
                arr2[i] = arr1[i];
                redCounter++;
            }else{
                arr[i]=0;
            }
        }
        if (arr[arr.length - 1] == arr1[arr1.length - 1]) {//循环判断篮球中奖个数
            arr2[arr.length - 1] = arr1[arr.length - 1];
            bluCounter++;
        }
        return arr2;
    }*/

    public static int [] get5(int []arr,int []arr1) {
        int arr2[]=new int[arr.length];
        for (int i = 0; i < arr.length-1; i++) {//循环6次
            for (int j = 0; j < arr.length-1; j++) {
                if (arr[i]==arr1[j]){//拿第i个奖池号码依次跟所有客户输入号码比对,如果相等直接存入新数组arr2
                    arr2[i]=arr[i];
                    break;//循环结束
                }
            }
        }
        if (arr[arr.length-1]==arr1[arr1.length-1]) {
            arr2[arr.length-1]=arr[arr.length-1];
        }
        return arr2;
    }
    //----------------------------------------------------------
    public static int get6(int JX) {
        int zjje=0;//定义一个中奖金额
        if(JX==1){
            zjje=10000000;
        }
        if(JX==2){
            zjje=5000000;
        }
        if(JX==3){
            zjje=9000;
        }
        if(JX==4){
            zjje=600;
        }
        if(JX==5){
            zjje=60;
        }
        if(JX==6){
            zjje=30;
        }
        return zjje;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值