package day06;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
/**
* 猜字母游戏
* @author zengy_000
*
*/
public class GuessGame {
public static void main(String[] args) {
int count=0;
int score=0;
Scanner scan=new Scanner(System.in);
char[] chs=generate();
System.out.println(Arrays.toString(chs));//仅为测试使用,方便测试
char[] input=new char[chs.length];
while(true){ //创造一个死循环,让用户一直猜,但是里面要有跳出循环的语句
System.out.println("请输入你猜测的字符:");
String str=scan.next().toUpperCase();//获取用户输入,并转换成大些
input=str.toCharArray();
if("exit".equals(str)){ //终止游戏
System.out.println("游戏结束,欢迎下次挑战!");
}
int[] result=check(chs,input);
if(result[0]==chs.length){ //判断如果位置和数组长度相同,说明猜对了
score=500*chs.length-10*count;
System.out.println("猜对了,得分:"+score);
break;
}else{
count++; //统计猜测的次数
System.out.println("正确元素有:"+result[1]+"个,正确位置有:"+result[0]+"个");
}
}
}
//随机生成一个包含五个字母的数组
public static char[] generate(){
char[] chs=new char[5];
Random rand=new Random();
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]; //定义一个开关数组,与letters里面每个元素对应,默认boolean为false
for(int i=0;i
int index;
do{
index=rand.nextInt(letters.length);
}while(flags[index]==true); //当遇到重复的字母时,重新生成随机数
chs[i]=letters[index];
flags[index]=true; //字母使用后,将字母对应的flags开关调成true,防止重复
}
return chs;
}
//比较两个数组的方法
public static int[] check(char[] chs,char[] input){
int[] result=new int[2];
for(int i=0;i
for(int j=0;j
if(chs[i]==input[j]){
result[1]++; //如果元素相同,result[1]加一
if(i==j){
result[0]++; //如果位置也一样,result[1]加一
}
break;
}
}
}
return result;
}
}