猜不重复的四位数小游戏——java

这里介绍使用java来实现猜四位不重复数字,直到猜正确程序结束;中间互动通过控制台来完成。

规则:

    系统随机生成四位不重复的数字(以下简称随机数),您只需要猜中这个随机数,每一次猜会给出返回值。A代表位置相同,B代表数字相同。
    eg:有一个位置相同系统提示‘1A1B’,有一个数字相同但是位置不对提示‘0A1B’,猜中2个数,一个数位置相同提示‘1A2B’,猜中4位数且位置都不对提示‘0A4B’。        

开发步骤:

1,获取随机四位不重复的数字

2,获取用户输入数字并判断是否相同

3,获取结果打印出提示语句


1. 首先我们要生成四位不重复的数,通过Random生成四位数的随机数,然后循坏判断是否有重复的数字。

public static String numBuilder(){
        //结果变量
        String num1 = "";
        Random random = new Random();
        while (true){
            //是否重复标志
            boolean flag = false;
            int i = random.nextInt(9999);
            String num = i+"";
            int length1 = num.length();
            if(length1==4){
                //循坏判断数字是否重复
                for (int j = 0; j < length1; j++) {
                    for (int k = j+1; k < length1; k++) {
                        if(num.charAt(j) == num.charAt(k)){
                            flag = true;
                            break;
                        }
                    }
                    if(flag == true){
                        break;
                    }
                }
                if(flag == false){
                    num1 = i+"";
                    break;
                }
            }
        }
        return num1;
    }

 2.判断用户猜测数字与系统随机数是否一致。

    /**
     *
     * @param num 实际的数。
     * @param guessNum 猜的数。
     * @return
     */
public static String guessNum(String num,String guessNum){
        boolean f = false;
        //先判断位置是否相同
        int contLocationRight = 0;
        int contRightNum = 0;
        for (int i = 0; i < guessNum.length(); i++) {
            //判断位置相同的
            if(guessNum.charAt(i) == num.charAt(i)){
                contLocationRight++;
            }
            for (int j = 0; j < num.length(); j++) {
                if(guessNum.charAt(i)==num.charAt(j)){
                    contRightNum++;
                }
            }
        }
        return contLocationRight+"A"+contRightNum+"B";
    }

3. main方法测试,这里因为要循环一直到用户猜正确为止,使用while循环实现。并且完善了提示语和查看答案所以main方法比较长,可以删除一些代码。这儿两个都列一下!

3.1 没完善的代码

public static void main(String[] args){
        String num1 = numBuilder();
        Scanner scanner = new Scanner(System.in);
        int count=0;
        while (true){
            count++;
            System.out.print("请输入您猜的数字:");
            String inputNum = scanner.next();
            if(inputNum.equals("****")){
                System.out.println("系统随机数为:"+num1);
                count--;
                continue;
            }
            if(inputNum.length()!=4){
                System.out.println("你输入的数字不是四位数,请重新输入!");
                count--;
                continue;
            }
            //获取输入的数字
            String result = guessNum(num1, inputNum);
            //结果输出
            if("4A4B".equals(result)){
                System.out.println("恭喜您,猜中正确数字,您一共猜了"+count+"次.");
                break;
            }else {
                System.out.println("—————————");
                System.out.println(result);
                System.out.println("—————————");
            }
        }
    }

测试结果截图:

 3.2 完善后的测试代码

public static void main(String[] args){
        String[] arr = {"别让你的脑子睡大觉!",
                "其实每一个人都拥有智慧,但有些人做了智慧的傀儡,而有一些人则做了智慧的主人。",
                "学习本应不是墨守陈规,而是去不断思考与领悟!",
                "创造靠智慧,处世靠常识;有常识而无智慧,谓之平庸,有智慧而无常识,谓之笨拙。",
                "什么,他还没猜对?你带多几个人,多带几个家伙?看看它的的脑袋用来干什么的啊?是用来装水的吗?",
                "莫等闲,白了少年头,空悲切",
                "你是不是经常熬夜,脑子都不转",
                "汝脑入水,锈也。",
                "都说一孕傻三年,你是怀孕了吗?",
                "可能真的是岁数大了吧,你脑子越来越不好使了。"};
        Random random = new Random();
        //获取四位不重复数字。
        String num1 = numBuilder();

        System.out.println("----------------------------========---------------------------------");
        System.out.println("游戏规则:");
        System.out.println( "\t系统随机生成四位不重复的数字(以下简称随机数),您只需要猜中这个随机数,\n" +
                "每一次猜会给出返回参数。A代表位置相同,B代表数字相同。\n"+
                "\teg:有一个位置相同系统提示‘1A1B’,有一个数字相同但是位置不对提示‘0A1B’,\n" +
                "猜中2个数,一个数位置相同提示‘1A2B’,猜中4位数且位置都不对提示‘0A4B’。\n" +
                "注:单位数字取值范围为(0~9)。");
        System.out.println("----------------------------========---------------------------------");
        Scanner scanner = new Scanner(System.in);
        int count=0;
        while (true){
            count++;
            System.out.print("请输入您猜的数字:");
            String inputNum = scanner.next();
            if(inputNum.equals("****")){
                System.out.println("系统随机数为:"+num1);
                count--;
                continue;
            }
            if(inputNum.equals("支付成功")){
                count--;
                System.out.println("输入****查看结果");
                continue;
            }
            if(inputNum.length()!=4){
                System.out.println("你输入的数字不是四位数,请重新输入!");
                count--;
                continue;
            }
            //获取输入的数字
            String result = guessNum(num1, inputNum);
            //结果输出
            if("4A4B".equals(result)){
                if(count==1){
                    System.out.println("======++======++======++======++======++======++======++======++");
                    System.out.println("恭喜您,猜中正确数字,您一共猜了"+count+"次,荣获‘后无来者’称号!");
                    System.out.println("======++======++======++======++======++======++======++======++");
                }
                else if(count<3){
                    System.out.println("======++======++======++======++======++======++======++======++");
                    System.out.println("恭喜您,猜中正确数字,您一共猜了"+count+"次,荣获‘前无古人’称号!");
                    System.out.println("======++======++======++======++======++======++======++======++");
                }
                else  if(count<5){
                    System.out.println("======++======++======++======++======++======++======++======++");
                    System.out.println("恭喜您,猜中正确数字,您一共猜了"+count+"次,荣获‘举世无双’称号!");
                    System.out.println("======++======++======++======++======++======++======++======++");
                }
                else if(count<9){
                    System.out.println("======++======++======++======++======++======++======++======++");
                    System.out.println("恭喜您,猜中正确数字,您一共猜了"+count+"次,荣获‘最强大脑’称号!");
                    System.out.println("======++======++======++======++======++======++======++======++");
                }else if(count<12){
                    System.out.println("======++======++======++======++======++======++======++======++");
                    System.out.println("恭喜您,猜中正确数字,您一共猜了"+count+"次,荣获‘足智多谋’称号!");
                    System.out.println("======++======++======++======++======++======++======++======++");
                }else {
                    System.out.println("======++======++======++======++======++======++======++======++");
                    System.out.println("恭喜您,猜中正确数字,您一共猜了"+count+"次,荣获‘平庸之才’称号!");
                    System.out.println("======++======++======++======++======++======++======++======++");
                }
                break;
            }else {
                System.out.println(result);
                System.out.println("—————————=—————————");
            }
            if(count==9||count==13||count>=16){
                System.out.println("你也太逊了吧,您可以支付0.5元获取正确答案!");
                if(count==16){
                    System.out.println("输入'****'查看正确答案");
                }
            }
            if(count>11){
                int i = random.nextInt(10);
                System.out.println(arr[i]);
            }
        }


    }

测试截图:

多次会有更多的提示,这里运气好就没有触发更多的提示,可以自己尝试一下 。

有更多小游戏可以评论留言,有机会下次发布。


版权归属作者(CY_99),未经许可,严禁转载!

可以分享该篇博客——2021-12-27

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值