JAVA LV3

김국민·2025년 1월 15일

JAVA

목록 보기
3/21

Lv3. 단어 맞추기 게임

  1. 컴퓨터가 랜덤으로 영어단어를 선택합니다.
    1. 영어단어의 자리수를 알려줍니다.

      ex ) PICTURE = 7자리 ⇒ _ _ _ _ _ _ _

  2. 사용자는 A 부터 Z 까지의 알파벳 중에서 하나를 입력합니다.
    1. 입력값이 A-Z 사이의 알파벳이 아니라면 다시 입력을 받습니다
    2. 입력값이 한 글자가 아니라면 다시 입력을 받습니다
    3. 이미 입력했던 알파벳이라면 다시 입력을 받습니다.
    4. 입력값이 정답에 포함된 알파벳일 경우 해당 알파벳이 들어간 자리를 전부 보여주고, 다시 입력을 받습니다.
      1. ex ) 정답이 eyes 인 경우에 E 를 입력했을 때
        1. _ _ _ _E _ E _
    5. 입력값이 정답에 포함되지 않은 알파벳일 경우 기회가 하나 차감되고, 다시 입력을 받습니다.
  3. 사용자가 9번 틀리면 게임오버됩니다.
  4. 게임오버 되기 전에 영어단어의 모든 자리를 알아내면 플레이어의 승리입니다.

나의 생각

게임을 크게 세부분으로 나누면 좋겠다고 생각했다.
1. init부분
2. 게임 진행부분
3. 승/패 여부 결정


  • init
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배열은 사용자가 맞춘 알파벳을 저장한다.


  • GAME
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;

    }

  • 판단하기
    선언해둔 flag의 값에 따라 게임의 승패를 결정한다.
profile
개발지망생

0개의 댓글