猜字母游戏,请大手嫁衣
package day08_summerize;
import java.util.Scanner;
import java.util.Random;
//猜字母游戏
/**
* @author Jooker
* @version v1.0
* @since v1.0
* @Date
*/
public class GuessCharsGame {
//method1 生成器:生成1个有n个随机字母元素的数组,元素不重复
public char[] arrayChar(int m){
Random rand = new Random();
char[] character = new char[m];
for(int n=0;n<m;n++){
character[n] = (char)(rand.nextInt(25)+97); /*随机元素*/
int i = 0;
while(i<n){
if(character[n] == character[i]){ /*如果重复,再给该位置的元素赋值,再比较,直到不重复*/
character[n] = (char)(rand.nextInt(25)+97);
}else{
i++;
}
}
System.out.print(character[n]);
}
return character;
}
//method2 比较器:比较随机生成的字母序列和输入的字符串;交互:正确数量、正确位置、猜的次数
public boolean check(String in,char[] check,int number,int summerize,boolean treat){
int counter = 0;
int position = 0;
treat = true;
for(int n=0;n<number;n++){
for(int i=0;i<in.length();i++){
if(check[n] == in.charAt(i)){ //String1.charAt(i) --从String1字符串里,取出第i个字母
counter++;
if(n == i){
position++;
}
}
}
}
if((counter == number)&&(position == number)){
System.out.println("恭喜你,都答对了.");
treat = false;
}else if(in.equals("exit")){
System.out.println("退出游戏");
treat = false;
}else{
System.out.println("你猜对了"+counter+"个字母,"
+ "其中"+position+"个字母位置正确(总次数="+summerize+",exit——退出)");
}
return treat;
}
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
//实例化类,再调用方法,生成字母序列
System.out.println("欢迎参加猜字母游戏,请输入你想猜测的字母序列元素个数:");
int num = scan.nextInt(); /*输入字母序列个数*/
System.out.println("游戏开始,你猜测的为"+num+"个字母的序列:(exit——退出)");
GuessCharsGame gener = new GuessCharsGame();
char[] focus = gener.arrayChar(num); /*调用method1,随机生成字母序列*/
//输入字符串
int sum = 0;
boolean tar =true;
while(tar){
String input = scan.next();
sum++;
tar = gener.check(input, focus, num, sum, tar);
}
scan.close();
}
}