需要的功能:
1.随机生成5个小写字母
2.用户输入猜测值,取前5个字母,不够为null
3.将猜测值与实际值比较,返回值正确的数量以及值和位置都正确的数量
4.当用户全对或次数超过50次时,返回用户分数,游戏结束
import java.util.Arrays;
import java.util.Scanner;
public class GuessChar {
/*
* > 需要的功能:
* >1.随机生成5个小写字母
* >2.用户输入猜测值,取前5个字母,不够为null
* >3.将猜测值与实际值比较,返回值正确的数量以及值和位置都正确的数量
* >4.当用户全对或次数超过20次时,返回用户分数,游戏结束
* >5.满分100分,错一次扣5分
*/
static Scanner scanner = new Scanner(System.in);//定义在外面,方便后续关闭
static int count;
public static void main(String[] args) {
System.out.println("客官,开始吧~");
compareTo(getRandomChar(),getUserChar());
GuessChar.scanner.close();
}
private static void compareTo(char[] randomChar, char[] userChar) {
int right = 0;
int allRight = 0;
int last = randomChar.length;//优化算法
System.out.println(randomChar);
for (int i = 0; i < 5; i++) {
if (randomChar[i]==userChar[i]) {
allRight++;
}
}
if (allRight==5) {
System.out.println("恭喜你猜对了,你的得分是"+(100-5*count));
return;
}
if (count==20) {
System.out.println("抱歉,你已经输光了,正确答案是:"+randomChar);
}
char[] randomCharCopy = Arrays.copyOf(randomChar, randomChar.length);
Arrays.sort(randomCharCopy);
Arrays.sort(userChar);
for (int i = 4; i > 0; i--) {
for (int j = 0; j < last; j++) {
if(userChar[i]==randomChar[j]){
right++;
last = j;
}
}
}
count++;
System.out.println("客官猜对了"+right+"个字母,位置和值都对的字母有"+allRight+"个");
compareTo(randomChar,getUserChar());
}
private static char[] getUserChar() {
char[] userChar;
System.out.println("请输入猜测值:");
userChar = scanner.nextLine().toCharArray();//将输入的字符串转变成字符数组
userChar = Arrays.copyOf(userChar, 5);//将数组转变成指定长度
return userChar;
}
private static char[] getRandomChar() {
char[] randomChar = new char[5];
for (int i = 0; i < randomChar.length; i++) {
randomChar[i] = (char) ((int) (Math.random()*26)+97);
}
return randomChar;
}
}