package ymy.day3;
/**
 * 这个类的功能是一个猜数游戏
 * (1)系统随机产生数据
 * (2)从终端输入数据跟产生数据进行比对
 * (3)大:过大。小:过小。正确:正确
 * (4)实现得分评价
 * (5)只有10次输入机会
 * (6)游戏结束提示是否重来
 * */


import java.util.*;

public class GuessNumber {
    public static void main(String[] args) {
        
        boolean derail = true;            //开关变量1
        boolean flag = true;            //开关变量2
        int count = 10;                    //猜测次数
        int point = 100;                //用户游戏得分
        int result = getRandom(100);    //随机产生100以内的整数
        
        while(derail){
            System.out.print("请输入 1 开始游戏,输入 0 结束游戏,");
            int state = Integer.parseInt(Input(type.tyint).toString());
            
            if(state==1){
                System.out.print("游戏开始,幸运数字以产生,快来猜猜看吧,");
                //循环体开始
                while (flag) {
                    if(count!=0){

                        //获取用户输入的数据
                        int number = Integer.parseInt(Input(type.tyint).toString());
                        
                        if(result==number){
                            System.out.println("--------------------");
                            System.out.println("回答正确,恭喜游戏过关!");
                            System.out.println("您共使用了 "+(10-count)+"次机会,得到了 "+point+" 点分数");
                            System.out.println("--------------------");
                            flag = false;        //数据初始化
                            count = 10;            //数据初始化
                            point = 100;        //数据初始化
                        }else if(number > result){
                            count--;
                            point=point-10;
                            System.out.println("数字过大,您还有 " + count + " 机会!");
                        }else if(number < result){
                            count--;
                            point=point-10;
                            System.out.println("数字过小,您还有 " + count + " 机会!");
                        }
                    }else{
                        System.out.println("很遗憾你的猜测次数已用完,请重新开始游戏!\n----------------------------------------------");
                        flag = false;        //数据初始化
                        count = 10;            //数据初始化
                        point = 100;        //数据初始化
                    }
                    
                }
                
            }else if(state==0){
                System.out.print("游戏退出!");
                derail = false;
            }
        }
        
        
        
    }
    
    
    /**
     * 随机产生scope值以内的整数
     * int scope:范围值
     * 例:getRandom(10)--->产生10以内的随机数
     * */
    public static int getRandom(int scope){
        int result = 0;
        return result = (int)(Math.random() * scope);
    }
    
    
    /**
     * 这是一个保存类型的枚举
     * */
    enum type{tyint,tyString,tyshort,tylong,tybyte,tyfloat,tydouble,tyboolean};
    
    /**
     * 万能输入,只要将参数选择为自己想要的输入类型,本函数就能返回你想要的数据类型
     * 输入函数,调用此方法会提示用户输入数据,并返回用想要的类型的数据
     * */
    public static Object Input(type ty){
        System.out.println("请输入数据:");
        Scanner scan = new Scanner(System.in);
        
        Object result = null;
        
        switch (ty) {
            case tyint:{
                result = scan.nextInt();
            }break;
            case tyString:{
                result = scan.next();
            }break;
            case tyshort:{
                result = scan.nextShort();
            }break;
            case tylong:{
                result = scan.nextLong();
            }break;
            case tybyte:{
                result = scan.nextByte();
            }break;
            case tyfloat:{
                result = scan.nextInt();
            }break;
            case tydouble:{
                result = scan.nextDouble();
            }break;
            case tyboolean:{
                result = scan.nextBoolean();
            }break;
            default:{
                System.out.print("数据有误!");
            }break;
        }
        
        return result;
    }
}