영어단어의 자리수를 알려줍니다.
ex ) PICTURE = 7자리 ⇒ _ _ _ _ _ _ _
_ _ _ _ → E _ E _나의 생각
게임을 크게 세부분으로 나누면 좋겠다고 생각했다.
1. init부분
2. 게임 진행부분
3. 승/패 여부 결정
public static List<String> words = Arrays.asList(
"airplane", "apple", "arm", "bakery", "banana", "bank", "bean", "belt", "bicycle", "biography",
"blackboard", "boat", "bowl", "broccoli", "bus", "car", "carrot", "chair", "cherry", "cinema",......)
Scanner sc = new Scanner(System.in);
Random rand = new Random();
char[] arr=words.get(rand.nextInt(words.size())).toCharArray();
int len = arr.length;
char[] visit = new char[len];
boolean flag = false;
Arrays.fill(visit, '_');
int life = 9;
미리 단어들을 선언해두고 랜덤하게 뽑는다.
arr배열은 문제를 저장하고
visit배열은 사용자가 맞춘 알파벳을 저장한다.
while(life > 0){
System.out.println("현재 남은 기회 : " + life);
System.out.print("A-Z 중에 하나를 입력해주세요 : "); String input = sc.next();
if(!checkInput(input, visit, arr)){
System.out.println("정답에 포함된 알파벳이 아닙니다 기회가 1 차감됩니다\n");
life--;
}
if (Arrays.equals(arr, visit)){
flag = true;
break;
}
System.out.println(Arrays.toString(visit));
}
life가 0으로 떨어지지 않으면 게임을 반복한다.
life차감의 판단은 checkInput메서드로 한다.
Arrays.equals로 arr와 visit이 같아지면 게임을 끝낸다.
public static boolean checkInput(String input, char[] visit, char[] arr){
boolean flag = false;
if(input.length() != 1){
return flag;
}
if(!Character.isLetter(input.charAt(0))){
return flag;
}
for(char val : visit){
if(val == input.charAt(0)){
return flag;
}
}
for(int i = 0; i < arr.length; i++){
if(arr[i] == input.charAt(0)){
visit[i] = input.charAt(0);
flag=true;
}
}
return flag;
}