java----猜字符小游戏

刚学了方法,做了个小项目,猜字符小游戏,这里和大家分享一下。
我们通过要达到的效果来分析:

            1首先命令行窗口提示用户进入猜字符游戏,并显示“猜吧”
            2然后用户输入一个五位数的字符串(不能重复),接着系统进行判断
            3如果字符串为"EXIT"则退出游戏
            4如果没猜对则提示猜对的字符的个数和猜对位置的个数
            5如果猜对则给出分数,并退出游戏
            6分数的话是一个字符一百分,猜错一次扣十分。
我们来分析:
这个游戏需要用到哪些数据:
    1.char[] ch 用来接收系统产生的随机字符
    2.char[] input 用来接收用户输入的字符
    3.int score 用来接收分数
    4.int count 用来接收猜错次数
    5.int[] result 用来存放猜对个数和猜对位置个数
 定义方法:
   1. public static char[] generate(){//用来生成随机字符数组
                            char[] ch = new char[5];
                            ...
                            return ch;
        }
    2.public static int[] check(char[] ch,char[] input){//用来检查猜中几个和猜中位置情况
                            int[] result = new int[ch.length];
                            ...
                            return result;
    }

    代码如下:

   1. public static char[] generate(){
                            char[] letter = new char[26];//用来存放A-Z的字符
                            for(int i =0;i<letter.length;i++){
                                        letter[i]=(char)(i+65);//将字母对应编码强制转换为字符并存放在数组中
                            }
                            int index = 0;
                            boolean[] flag = new boolean[letter.length];//用来标记已经选过的字符
                            char[] ch = new char[5];
                            while(index<ch.length){
                                             int i = (int)(Math.random()*letter.length);
                                             if(flag[i]){//排除已经选过的字符
                                                     contiune;
                                             }
                                             ch[index]=letter[i];
                                             index++;
                                             flag[i]=true;
                            }
                            return ch;
        }

        2.public static in[] check(char[] ch,char[] input){
                                int[] result = new int[2];
                                for(int i= 0;i<ch.length;i++){
                                            for(int j=0;j<input.length;j++){
                                                        if(ch[i]==input[j]){
                                                                result[0]++;//猜中字符的个数
                                                                if(i==j){
                                                                        result[1]++;//猜中位置的个数
                                                                        break;//如果位置判断相同则不用扫描后面的字符了
                                                                }
                                                        }
                                            }
                                }
                                return result;
             }

             接下来开始写main函数
             public static void main(String[] agrs){
                                 char[] ch = generate();
                                 Scanner sc =new Sacnner(System.in);
                                 int count =0;
                                 int score =0;
                                 System.out.println("欢迎来到猜字符游戏");
                                 while(true){
                                                System.out.println("猜吧")
                                                String str = sc.nextInt().touppercase();//把输入的字符串转换为大写
                                                if(str.equal("EXIT")){
                                                            System.out.println("退出");
                                                            break;
                                                }
                                                char input = str.toCharArrays();//字符串转换为字符数组
                                                int result = check(ch,input);
                                                if(result[1]==ch.length){
                                                        score = 100*ch.length-10*count;
                                                        System.out.println("猜对了,得分:"+score)
                                                        break;
                                                }
                                                else{
                                                            System.out.println("猜对字符个数为"+result[0]+"猜对字符位置个数为"+result[1]);
                                                            count++;
                                                }
                                 }
             }

             这个游戏还可以加些小功能,比如通过改变猜测的字符串的长度来改变游戏难度,或者通过分数来限制游戏猜测次数等等,这里就不多写了,大家可以尝试下。

转载于:https://blog.51cto.com/10972685/2070021

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值