import java.util.*;
public class Main {
/*
字符猜位置游戏;
每次提交只能被告知答对几个位置;
根据提示答对的位置数推测出每个字符对应的正确位置;
*/
public static void main(String[] args) {
char startChar = 'A';
int gameLength = 8;
List<String> ballList = new ArrayList<>();
String endChar = "";
for (int i = 0; i < gameLength; i++) {
endChar = String.valueOf((char)((int)startChar + i));
ballList.add(endChar);
}
String quest;
StringBuilder anserString = new StringBuilder();
for (int i = 0; i < gameLength; i++) {
// 组装答案
anserString.append(getTempAnserStr(ballList));
}
quest = anserString.toString();
String anser = "";
System.out.println("游戏开始: 共"+gameLength+"位," + "从"+ startChar + "到" + endChar);
Scanner sc = new Scanner(System.in);
int ansNum = 0;
while(!evaAnser(anser,quest)) {
anser = sc.next();
ansNum++;
};
System.out.println("回答正确! 答案是:" + quest);
System.out.println("回答次数:" + ansNum);
}
private static boolean evaAnser(String anser, String quest) {
if (anser == null || anser.isEmpty()) {
return false;
}
int correctNums = 0;
char[] questArr = quest.toCharArray();
char[] anserArr = anser.toCharArray();
for (int i = 0; i < anserArr.length; i++) {
if (questArr[i] == anserArr[i]) {
correctNums++;
}
}
System.out.println("correct: " + correctNums);
return correctNums == quest.length();
}
// 获取随机字符
private static String getTempAnserStr(List<String> balls) {
Random random = new Random();
int randomNumber = random.nextInt(balls.size());
String tempBall = balls.get(randomNumber);
balls.remove(randomNumber);
return tempBall;
}
}
游戏示例: