猜数字升级版

package org.blackice;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class GuestNumber {

        /**
         * @param args
         */
        public static void main(String[] args) {
                try {
                        int i = 0;
                        String sNum = CreateNum();
                        System.out.println("==============================================");
                        System.out.println("指令说明:");
                        System.out.println("0、输入 start 重新开始游戏");//不用这个查看答案
                        System.out.println("1、输入 redo 查看答案");        //这个变成作弊专用
                        System.out.println("2、输入 exit 退出游戏");
                        System.out.println("游戏规则");
                        System.out.println("1、游戏开始时会产生一个0000-9999随机数");
                        System.out.println("2、系统接收您输入的四位数字,并加以比较,猜中并位置正确的数字位以 1 表示");
                        System.out.println("   ");
                        System.out.println("==============================================");
                        String inputStr = "";
                        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                        do {
                                inputStr = br.readLine();
                                if (inputStr.equals("redo")) {
                                        System.out.println("既然你这么想知道,我那就告诉你好咯,答案是:" + sNum);
                                } else if (inputStr.equals("exit")) {
                                        System.exit(0);
                                } else if (inputStr.equals("start")) {
                                        System.out.println("游戏已重新开始了");  //给出提示
                                        System.out.println("我现在有一个0000-9999的数字,你想的数字是不是和我一样哦!");
                                        i = 0;
                                        sNum = CreateNum();
                                } else {
                                        if ((!inputStr.matches("[0-9]+")) || inputStr.length() > 4 || inputStr.length() < 4) {
                                                System.out.println("不要打岔啦,要输入正确的四个数字:" + inputStr.length());
                                        } else if (i >= 9) {//这里添加条件,猜满10不让再猜了
                                                System.out.println("你已没机会了,等下次再猜吧,答案是:" + sNum);
                                        } else {
                                                i++;
                                                if (inputStr.equals(sNum)) {
                                                        switch (i) {
                                                                case 1:
                                                                         {
                                                                                switch ((int) (Math.random() * 100) % 4) {
                                                                                        case 0:
                                                                                                System.out.println("好厉害哦,第一次就猜对了");
                                                                                                break;
                                                                                        case 1:
                                                                                                System.out.println("小样,你是不是作弊呀");
                                                                                                break;
                                                                                        case 2:
                                                                                                System.out.println("一猜就中,你是不是算命先生");
                                                                                                break;
                                                                                        case 3:
                                                                                                System.out.println("额的神哦,你猜的也太准了吧");
                                                                                                break;
                                                                                }
                                                                        }
                                                                        break;
                                                                case 2:
                                                                case 3:
                                                                case 4:
                                                                case 5:
                                                                case 6:
                                                                case 7:
                                                                case 8:
                                                                        System.out.println("恭喜您猜中对了!我还以为你还要再猜" + (10 - i) + "次呢!");
                                                                        break;
                                                                case 9:
                                                                        System.out.println("你果然没有让我失望呀,在最后的时刻竟然猜对了");
                                                                        break;
                                                        }

                                                } else {
                                                        System.out.println("没有猜对,给个提示你:" + CompareNum(inputStr, sNum));
                                                        System.out.println("还可以再猜" + (10 - i) + "次,要抓紧机会哦");
                                                }
                                        }
                                }
                        } while (inputStr != null);
                } catch (Exception e) {
                        System.out.println(e.getMessage());
                }
        }
        //比较两个数,并返回比较结果

        private static String CompareNum(String str1, String str2) {
                String strTemp = "";
                String v1 = "", v2 = "";
                for (int i = 1; i <= 4; i++) {
                        v1 = str1.substring(i - 1, i);
                        v2 = str2.substring(i - 1, i);
                        if (v1.equals(v2)) {
                                strTemp += "1";
                        } else {
                                strTemp += "0";
                        }
                }
                return strTemp;
        }
        //取得一个四位随机数

        private static String CreateNum() {
                String strTemp = "";//原来的方法产生四个都是零的机率太高了
                strTemp = "" +
                                        (int)(Math.random()*10000)%10 +
                                        (int)(Math.random()*10000)%10 +
                                        (int)(Math.random()*10000)%10 +
                                        (int)(Math.random()*10000)%10;
                return strTemp;
        }
}

 

posted @ 2012-08-01 14:42  黑冰.org  阅读(317)  评论(0编辑  收藏  举报