抽奖游戏————详细到起飞的教程

 

目录

一、抽奖系统介绍

二、代码实现

1、随机生成中奖号码

1.1、中奖号码createNumber方法

 1.2、控制判断contains方法

2、用户输入中奖号码

3、判断中奖情况

3.1、判断奖项isWin方法 

 三、完整代码

一、抽奖系统介绍

抽奖的号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1-33中选择,不允许重复,蓝色球号码从1-16中选择。红色球只看值,不看顺序。

注:我们这里规定一等奖为1000万,二等奖为30万,其他与表中一致。

二、代码实现

1、随机生成中奖号码

1.1、中奖号码createNumber方法

创建一个长度为7的数组存放中奖号码,其中前6个为红球,最后1个为蓝球。需要注意的是,for循环中,需要把i++放在if判断语句中,当数字重复时不执行i++语句,只有录入成功才进行++操作。

//写一个随机获取中奖号码的方法createNumber()
    public static int[] createNumber(){
        int[] arr = new int[7];
        Random r = new Random();
        for (int i = 0; i < 6;){
            int redNumber = r.nextInt(33) + 1;
            if (!contains(arr,redNumber)){
                arr[i] = redNumber;
                i++;
            }
        }
        int blueNumber = r.nextInt(16)+1;
        arr[arr.length-1] = blueNumber;
        return arr;
    }


 1.2、控制判断contains方法

当数组arr中有number则返回false,没有则返回true。

//判断一个数在不在数组内
    public static boolean contains(int[] arr, int number){
        for (int i = 0; i < arr.length; i++){
            if(arr[i] == number){
                return true;
            }
        }
        return false;
    }


2、用户输入中奖号码

同样创建一个长度为7的数组,利用键盘录入用户输入号码。同样需要把i++放入if判断语句中,当录入成功再进行i++操作。

//写一个用户输入彩票号码的方法userInputNumber()
    public static int[] userInputNumber(){
        int[] arr = new int[7];
        Scanner sc = new Scanner(System.in);
        for(int i = 0; i < arr.length-1;){
            System.out.println("请输入第"+ (i+1) +"个红球号码");
            int redNumber = sc.nextInt();
            if(redNumber >= 1 && redNumber <= 33){
                if(!contains(arr,redNumber)){
                    arr[i] = redNumber;
                    i++;
                }
            } else {
                //当输入的号码不符合条件时,给出提示
                System.out.println("输入超出范围");
            }
        }
        System.out.println("请输入蓝球号码");
        while (true){
            int blueNumber = sc.nextInt();
            if(blueNumber >= 1 && blueNumber <= 16){
                arr[arr.length-1] = blueNumber;
                break;
            }
        }
        return arr;
    }

3、判断中奖情况

 定义redCount和blueCount存放相同球的个数,写for循环时需要注意红球的范围。

public static void main(String[] args) {
        //通过createNumber()方法生成随机中奖号码
        int[] arr = createNumber();

        //打印随机获取的彩票号码和用户输入的彩票号码,然后可以看着中奖号码来输入号码,想中多少奖就中多少奖
        /*for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println(" ");*/

        //用户输入号码
        int[] userArr = userInputNumber();
        /*for (int i = 0; i < userArr.length; i++) {
            System.out.print(userArr[i] + " ");
        }*/

        int redCount = 0;
        int blueCount = 0;
        for (int i = 0; i < userArr.length - 1; i++) {
            int redNumber = userArr[i];
            for (int j = 0; j < arr.length - 1; j++) {
                if (redNumber == arr[j]) {
                    redCount++;
                    break;
                }
            }
        }
        if (userArr[userArr.length - 1] == arr[arr.length - 1]) {
            blueCount = blueCount + 1;
        }

        //查看红蓝球各中多少
        /*System.out.println(" ");
        System.out.println(redCount);
        System.out.println(blueCount);
         */

        //调用judgeWin()方法来判断中了多少奖
        judgeWin(redCount,blueCount);
    }

3.1、判断奖项isWin方法 

 用于判断是否中奖以及中几等奖的函数,几等奖对应返回数字几,并在main中用switch判断。

public static void judgeWin(int redCount, int blueCount){
        if (redCount == 6 && blueCount == 1) {
            System.out.println("恭喜你,中奖1000万元");
        } else if (redCount == 6 && blueCount == 0) {
            System.out.println("恭喜你,中奖500万元");
        } else if (redCount == 5 && blueCount == 1) {
            System.out.println("恭喜你,中奖3000元");
        } else if ((redCount == 5 && blueCount == 0) || (redCount == 4 && blueCount == 1)) {
            System.out.println("恭喜你,中奖200元");
        } else if ((redCount == 4 && blueCount == 0) || (redCount == 3 && blueCount == 1)) {
            System.out.println("恭喜你,中奖10元");
        } else if ((redCount == 2 && blueCount == 1) || (redCount == 1 && blueCount == 1)
                || (redCount == 0 && blueCount == 1)) {
            System.out.println("恭喜你,中奖5元");
        } else {
            System.out.println("谢谢参与");
        }
    }

 三、完整代码

package test;
import java.util.Scanner;
import java.util.Random;

public class Text6 {
    public static void main(String[] args) {
        //通过createNumber()方法生成随机中奖号码
        int[] arr = createNumber();

        //打印随机获取的彩票号码和用户输入的彩票号码,然后可以看着中奖号码来输入号码,想中多少奖就中多少奖
        /*for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println(" ");*/

        //用户输入号码
        int[] userArr = userInputNumber();
        /*for (int i = 0; i < userArr.length; i++) {
            System.out.print(userArr[i] + " ");
        }*/

        int redCount = 0;
        int blueCount = 0;
        for (int i = 0; i < userArr.length - 1; i++) {
            int redNumber = userArr[i];
            for (int j = 0; j < arr.length - 1; j++) {
                if (redNumber == arr[j]) {
                    redCount++;
                    break;
                }
            }
        }
        if (userArr[userArr.length - 1] == arr[arr.length - 1]) {
            blueCount = blueCount + 1;
        }

        //查看红蓝球各中多少
        /*System.out.println(" ");
        System.out.println(redCount);
        System.out.println(blueCount);
         */

        //调用judgeWin()方法来判断中了多少奖
        judgeWin(redCount,blueCount);
    }

    public static void judgeWin(int redCount, int blueCount){
        if (redCount == 6 && blueCount == 1) {
            System.out.println("恭喜你,中奖1000万元");
        } else if (redCount == 6 && blueCount == 0) {
            System.out.println("恭喜你,中奖500万元");
        } else if (redCount == 5 && blueCount == 1) {
            System.out.println("恭喜你,中奖3000元");
        } else if ((redCount == 5 && blueCount == 0) || (redCount == 4 && blueCount == 1)) {
            System.out.println("恭喜你,中奖200元");
        } else if ((redCount == 4 && blueCount == 0) || (redCount == 3 && blueCount == 1)) {
            System.out.println("恭喜你,中奖10元");
        } else if ((redCount == 2 && blueCount == 1) || (redCount == 1 && blueCount == 1)
                || (redCount == 0 && blueCount == 1)) {
            System.out.println("恭喜你,中奖5元");
        } else {
            System.out.println("谢谢参与");
        }
    }

    //写一个随机获取中奖号码的方法createNumber()
    public static int[] createNumber(){
        int[] arr = new int[7];
        Random r = new Random();
        for (int i = 0; i < 6;){
            int redNumber = r.nextInt(33) + 1;
            if (!contains(arr,redNumber)){
                arr[i] = redNumber;
                i++;
            }
        }
        int blueNumber = r.nextInt(16)+1;
        arr[arr.length-1] = blueNumber;
        return arr;
    }

    //写一个用户输入彩票号码的方法userInputNumber()
    public static int[] userInputNumber(){
        int[] arr = new int[7];
        Scanner sc = new Scanner(System.in);
        for(int i = 0; i < arr.length-1;){
            System.out.println("请输入第"+ (i+1) +"个红球号码");
            int redNumber = sc.nextInt();
            if(redNumber >= 1 && redNumber <= 33){
                if(!contains(arr,redNumber)){
                    arr[i] = redNumber;
                    i++;
                }
            } else {
                //当输入的号码不符合条件时,给出提示
                System.out.println("输入超出范围");
            }
        }
        System.out.println("请输入蓝球号码");
        while (true){
            int blueNumber = sc.nextInt();
            if(blueNumber >= 1 && blueNumber <= 16){
                arr[arr.length-1] = blueNumber;
                break;
            }
        }
        return arr;
    }

    //判断一个数在不在数组内
    public static boolean contains(int[] arr, int number){
        for (int i = 0; i < arr.length; i++){
            if(arr[i] == number){
                return true;
            }
        }
        return false;
    }

}

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值