A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

<import java.util.Scanner;
import java.util.Random;
public class CaiShuZi {
        public static void main(String[] args) {
                Scanner sc=new Scanner(System.in);
                //初始化游戏  游戏说明
                System.out.println("---------------------猜数字-----------------------");
                System.out.println();
                System.out.println("                   游戏说明                    ");
                System.out.println();
                System.out.println("游戏时会随机产生四个0-9之间的数字,依次输入四个数(数字可以重复)");
                System.out.println("如果位置和数字都正确,相应位置显示R");
                System.out.println("如果数字存在但位置错误,相应位置显示O");
                System.out.println("如果数字不存在,相应位置显示X");
                System.out.println("过关条件:在8次之内能猜出正确的数字");
                System.out.println();
                System.out.println();
                boolean fg=false;  //用于判断闯关是否成功
                String rt="";     //用于存储随机产生的四个数
                while(true) {
                    System.out.println("1.开始游戏");
                    System.out.println("2.退出游戏");
            System.out.println();
            System.out.println("请输入您的选择");
                        int xh=sc.nextInt();
                        if(xh==2){break;}
                        else {
                          //进行游戏
                          rt=init();   //获取生成的随机数
                          
                          for(int i=1;i<8;i++) {
                                 String rl=getInfo(rt,i);   //游戏结果
                                 String rl0="RRRR";
                                 int bt=rl.compareTo(rl0);
                             if(bt==0) {
                                     fg=true;
                                         break;
                                 }
                                 else
                                     System.out.println(rl);             
                          }
                                  
                        }

                        if(fg) {
                           System.out.println("------------恭喜你过关了----------------");
                           System.out.println();
                       System.out.println();
               System.out.println("退出游戏请输入0,继续游戏请输入其他数字键");
                           int dh=sc.nextInt();
                           if(dh==0){break;}
                        }
                        else {
                           System.out.println("--------------很遗憾,您输了--------------------------");
               System.out.println();
                       System.out.println("正确答案是:\t"+rt);                     
               System.out.println();
                       
               System.out.println();
               System.out.println("退出游戏请输入0,继续游戏请输入其他数字键");
                           int dh=sc.nextInt();
                           if(dh==0){break;}
                        }

                }               
        }

       
        //加载游戏  返回产生的随机数
        public static String init() {
           //随机产生四个数
           Random rd=new Random();
           int a1=rd.nextInt(10);
           int a2=rd.nextInt(10);
           int a3=rd.nextInt(10);
           int a4=rd.nextInt(10);
           System.out.println("游戏初始化完成!");
           String rt="";
           rt+=a1;
           rt+=a2;
           rt+=a3;
           rt+=a4;
           return rt;
        }
        //判断游戏结果
        public static String getInfo(String a,int i) {  
          
           Scanner sc=new Scanner(System.in);
           //拆分目标数  (游戏初始化时产生的随机数)
           int a1 = Integer.parseInt(a.substring(0,1));
           int a2 = Integer.parseInt(a.substring(1,2));
           int a3 = Integer.parseInt(a.substring(2,3));
           int a4 = Integer.parseInt(a.substring(3,4));             
           System.out.println();
           System.out.println("请输入四个数字,进行第"+i+"次尝试");
           int num=sc.nextInt();
           //声明四个变量,用于接收用户输入的四个数字
           int n1,n2,n3,n4;    //分别代表千位,百位,十位 ,个位
           n1=num/1000;
           n2=num%1000/100;
           n3=num%100/10;
           n4=num%10;
           String result="";  //用于存储判断结果
           //判断各个数位的结果      
           if(n1==a1) { a1=10; result+="R"; }    //当第一位数字匹配时 ,目标第一位中的数字不能参与后继判断了,因为这样会后继数字的判断
                                                 
           else {
                   if(n1==a2 || n1==a3 ||n1==a4) {
                    result+="O";                 //数字存在,但位置不正确
                    }
                    else { result+="X";}             //数字和位置都不正确
           }

           if(n2==a2) { a2=10; result+="R"; }
           else {
                   if(n2==a4 || n2==a3 ||n2==a1) {
                    result+="O";
                    }
                    else { result+="X";}
           }

           if(n3==a3) { a3=10; result+="R"; }
           else {
                   if(n3==a2 || n3==a4 ||n3==a1) {
                    result+="O";
                    }
                    else { result+="X";}
           }

           if(n4==a4) { a4=10;result+="R"; }
           else {
                   if(n4==a2 || n4==a3 ||n4==a1) {
                    result+="O";
                    }
                    else { result+="X";}
           }
           return result;      
        }       
}
>
游戏规则已在游戏初始化界面给出,就不再赘述:
感觉在游戏提示结果的判断上有点小问题
正常的需求是:
如果目标数字是  2005

玩家输入的数字  0000
正确的提示结果  XRRX
我的提示结果是  ORRX

玩家输入的数字  5555
正确的提示结果  XXXR
我的提示结果是  OOOR
我的思路是:
1.从第一位判断,如果目标第一位数字与玩家输入的第一位相同,提示结果的第一位就置为R,并将目标结果的第一位数字置为10,以免影响后面的判断结果,否则就拿玩家输入的第一位数字分别于与目标的第二位,第三位、第四位进行比较,如果有相等的,提示结果的第一位就置为O,否则置为X。
2.进行第二位,第三位,第四位的判断,重复步骤1的过程。
通过分析,我发现了问题的所在,但不知道如何解决,求大神指教

5 个回复

倒序浏览
不错不错!这游戏挺有创意的
回复 使用道具 举报
用手机感觉解读代码很艰难,在电脑上就能很容易看出来代码的意思,
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
学习学习
回复 使用道具 举报
6666666666666
回复 使用道具 举报
哇  优秀  热血无赖既视感
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马