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;
}
}