Java实现猜字母游戏
package day06; import java.util.Scanner; public class HomeWork { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = "GuessingGame"; System.out.println(string+"欢迎尝试猜字谜游戏!满分500分,最低分为0分!"); System.out.println(string+"请输入游戏级别(5,7,9)"); int n = scanner.nextInt(); int count = 0; System.out.println(string+"游戏开始,请输入你所猜的"+n+"个字母的序列:(exit - 退出)"); char[] chs = generate(n); System.out.println(chs); while(true){ String s = scanner.next().trim().toUpperCase(); char[] input = s.toCharArray(); int[] result = check(chs, input); int score = 500-count*10; if(s.equals("EXIT")){ System.out.println("欢迎再次挑战!"); break; } if(score<=0){ score=0; } if(result[1] == chs.length){ System.out.println("恭喜你!猜对了!你的得分是:"+score); break; }else{ count++; System.out.println(string+"你猜对"+result[0]+"个字符,其中"+result[1]+"个字符的位置正确!(总次数="+count+",exit - 退出!"); } } } // 声明一个方法,用于生成随机不同字符数组,n控制生成字符的个数 public static char[] generate(int n){ char[] chs = new char[n]; char[] letters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; //设置开关 boolean[] flags = new boolean[letters.length]; for(int i=0;i<chs.length;i++){ int index;//letters下标 do{ //生成随机下标 index = (int) (Math.random()*letters.length); }while(flags[index]);//为true,则以存在,再次循环,取得不同的字符 chs[i] = letters[index];//给生成的新的数组赋值 flags[index] = true;//设置为false,说明这个位置已经有数据了 } return chs; } //声明一个方法,比较随机生成的数组和用户输入的数组,返回int数组,里面保存了对比后字符对的个数和位置对的个数 public static int[] check(char[] chs,char[] input){ int[] result = new int[2]; for(int i=0;i<chs.length;i++){ for(int k=0;k<input.length;k++){ if(chs[i] == input[k]){ result[0]++;//记录字符对的个数 if(i==k){ result[1]++;//记录位置对的个数 } break; } } } return result; } }