java猜数游戏1.5 Java初学者必看

这里是Java系列文章,主要介绍有Java的使用及Java相关的,如Java语言本身以及Java等级考试

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程

因此,为了更好的使用Java,加油学习吧!

关于作者:

· 小白(Libra),计算机兴趣爱好者,Java,python,C,Hadoop

· Email:717560136@qq.com

· GitHub:https://github.com/Regel-zack

转载请注明出处

前言

        Java可以实现一些独特的小游戏,例如说飞机大战,五子棋等,或者就如本篇博客所讲的猜数游戏。

目录

前言

正文

小结

结语


正文

 第一版可以看过往文章,这一次优化了说明,增加了次数限制,增加了新的语音播报

让整个游戏显得更加的欢乐

以下为游戏内试玩截图

这是刚进游戏的时候截图

这是第一次猜错之后的游戏截图

这是最后一次将机会用尽之后的截图

 

 可以看到比第一代优化的还是可以的,但是代码内部还是比较的,乱

import java.util.*;

public class Excel {
    public static void main(String[] args) {
        // 欢迎语
        System.out.println("Welcome to play!");
        System.out.println("正在生成随机数中,请稍后……");

        // 开始制作随机数
        int [] a = new int[4];
        a = random_num();
        int num = 0;
        for (int j = 0;j<a.length;j++){
            num = num*10+a[j];
        }

        // 打印输出随机数
        //System.out.println(num);

        System.out.println("已经生成了四位随机数,没有重复,你的输入也不能重复哦,开始愉快的游戏吧!");
        
        int count = 10;
        
        // 用户输入自己的答案
        while (true){

            int sum = 0,side = 0,score = 0;

            System.out.println("你认为的答案是:");
            Scanner admin_input = new Scanner(System.in);
            int admin_num = admin_input.nextInt();

            int [] admin_num_arrays = new int[4];
            
            admin_num_arrays[0] = (int) admin_num / 1000;
            admin_num_arrays[1] = (int) (admin_num - admin_num_arrays[0] * 1000) / 100;
            admin_num_arrays[2] = (int) ((admin_num - admin_num_arrays[0] * 1000) - admin_num_arrays[1] * 100) / 10;
            admin_num_arrays[3] = (int) ((admin_num - admin_num_arrays[0] * 1000) - admin_num_arrays[1] * 100) - admin_num_arrays[2] * 10;

            boolean admin_repeat = true;

            for (int i = 0;i < 4;i++){
                switch (i){
                    case 0:
                        break;
                    case 1:
                        if (admin_num_arrays[i] == admin_num_arrays[i-1]){
                            admin_repeat = false;
                        }
                        break;
                    case 2:
                        if (admin_num_arrays[i] == admin_num_arrays[i-1]){
                            admin_repeat = false;
                        }
                        if (admin_num_arrays[i] == admin_num_arrays[i-2]){
                            admin_repeat = false;
                        }
                        break;
                    case 3:
                        if (admin_num_arrays[i] == admin_num_arrays[i-1]){
                            admin_repeat = false;
                        }
                        if (admin_num_arrays[i] == admin_num_arrays[i-2]){
                            admin_repeat = false;
                        }
                        if (admin_num_arrays[i] == admin_num_arrays[i-3]){
                            admin_repeat = false;
                        }
                        break;
                }
            }

            if (admin_repeat == false){
                System.out.println("你输入的数字有重复的,不可以重复哦!");
                continue;
            }
            
            for (int i = 0;i < 4;i++){
                for (int j = 0;j <4;j++){
                    score = Judge_num_0(admin_num_arrays[i],a[j]);
                    if (i == j && score == 1)
                    {
                        side++;
                        sum++;
                        continue;
                    } else if (score == 1) 
                    {
                        sum++;
                        continue;
                    }
                    
                }
                
            }

            System.out.println("正确的数字位置个数是:" + side);
            System.out.println("正确的数字个数是:" + sum);
            
            if (sum > side){
                System.out.println("只是数字位置错了一些,再思考一下吧!");
            }
            
            

            if (side == 4){
                System.out.println(num);
                break;
            } else {count--;}

            
            if (count < 1){
                System.out.println("啊哦,你错误次数到十次了,游戏结束了,正确的数字是" + num + ",下一次就会猜出来啦!");
                break;
            } else {
                System.out.println("你的机会还剩下" + count + "次");
            }
            
        }
        
        
    }

    public static int[] random_num(){
        int max = 9,min = 0;
        int [] num = new int[4];
        boolean repeat = false;
        for (int i = 0;i < num.length;i++){
                num[i] = (int) (Math.random() * (max-min)+min);
                switch (i){
                    case 0 :
                        break;
                    case 1 :
                        if (num[i] == num[i-1]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-1]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-1]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-1]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        break;
                    case 2 :
                        if (num[i] == num[i-1]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-2]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-1]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-2]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-1]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-2]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-1]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-2]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        break;
                    case 3 :
                        if (num[i] == num[i-1]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-2]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-3]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-1]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-2]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-3]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-1]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-2]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-3]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-1]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-2]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        if (num[i] == num[i-3]){
                            num[i] = (int) (Math.random() * (max-min)+min);
                        }
                        break;
                }
            }
        
        return num;
    }

    public static int Judge_num_0(int num,int a){
        if (num == a) {return 1;} else return 0;
    }
}

小结

至此,我们就做出了一个比上一个版本更加好用的猜数游戏了。

结语

我是Libra,一位永远追求公平的学习者。


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值