简单的猜数字小游戏

/**
简单的猜数字小游戏 要求如下:
用户输入想猜测数字的范围,输入1000则是0~1000之内的数字,程序就会内置一个 1 到 1000 之间的数字作
为猜测的结果,由用户猜测此数字,用户每猜测一次,由系统提示猜测结果:大了、小了或
者猜对了;直到用户猜对结果,则提示游戏结束。用户可以提前退出游戏,即,游戏过程中
,如果用户录入数字0则游戏终止.
加入新功能: 记次猜测次数功能,提示游戏开始时间,计猜测总用时功能,提示游戏结束时间

思路:
1.用户输入电脑生成的数值取值范围,接收并判断是否是合理数值?
2.游戏开始,显示当前系统时间.
3.计时从用户输入完正确取值范围后开始运行
4.判断用户输入数字是否是0,0结束游戏
5.其余情况判断是否大于或小于系统数字即可,每猜一次计数器++
6.游戏结束,显示用时,显示当前系统时间.
*/

public class GuessNumber {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
        String nowTime = sdf.format(date);
        
        /*第一位不能是0,是0就退出游戏*/
        String userRegex = "[1-9][\\d]+";    
        
        System.out.println("请输入您想挑战的0~最大数范围");
        String userScan = scan.next();
        /*判断用户输入的数字是否满足要求*/
        if(userScan.matches(userRegex)){
            int num = Integer.parseInt(userScan);
            guessGame(num);
        }else{
            /*游戏结束时间*/
            System.out.println("取值范围非法,无法开始游戏,再见");
            System.out.println("游戏结束时间:"+nowTime);
        }
    }

    public static void guessGame(int num) {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
        String nowTime = sdf.format(date);
        Scanner scan = new Scanner(System.in);
        Random rand = new Random();

        int count = 0;    //计数器
        int guessNum = rand.nextInt(num);
        System.out.println("系统已经生成完毕");
        
        long startTime = System.currentTimeMillis();
        System.out.println("请输入您猜测的数字(0退出):");
        int scanNum = scan.nextInt();
        
        while(scanNum != guessNum){
            if(scanNum == 0){
                break;
            }else if(scanNum > guessNum){
                count++;
                System.out.println("不好意思,猜大了,请继续输入");
                scanNum = scan.nextInt();
            }else if(scanNum < guessNum){
                count++;
                System.out.println("不好意思,猜小了,请继续输入");
                scanNum = scan.nextInt();
            }
        }
        if(scanNum == 0){
            System.out.println("遗憾退出,欢迎再来");
            System.out.println("游戏结束时间:"+nowTime);
        }else{
            long endTime = System.currentTimeMillis();
            long totalTime = (endTime - startTime)/1000;
            
            System.out.println("恭喜,您用了"+count+"次猜对了!");
            System.out.println("您的总用时:"+totalTime+"秒");
            System.out.println("游戏结束时间:"+nowTime);
        }
    }
}
View Code

 

posted @ 2016-04-30 23:07  安仔80  阅读(580)  评论(0编辑  收藏  举报