카테고리 없음

트러블 슈팅_숫자 야구게임

suuuki 2024. 10. 25. 11:31

Lv.1

 

이걸 보자마자 로또 프로그램 만들었던걸 응용해야 겠다 생각했다

 Set<Integer> randomNum = new HashSet<Integer>();
    Random random = new Random();

    while(randomNum.size() < 3){
        int number = random.nextInt(9) + 1;
        randomNum.add(number);
    }

 

그냥 클래스에 이걸 넣는건 아닌것같아서, 질문하러 갔다가, 아에 Collection.shuffle로 작성하는법을 알려주셨다

    private List<Character> characters = List.of('1', '2', '3', '4', '5', '6', '7', '8', '9');

    private String getRandom(List<Character> characters) {
        ArrayList<Character> characters1 = new ArrayList<>(characters);
        Collections.shuffle(characters1);
        String result = "";
        for (int i = 0; i < 3; i++) {
            result += characters1.get(i);
        }
        return result;

protected boolean validateInput(String input) {
        //3글자가 아닐때
        if(input.length() != 3){
            System.out.println("3자리의 숫자를 입력해주세요");
            return = false;
        }
        //중복된 숫자 금지

        //문자 작성 금지

    }

 

여기서는 3글자가 아닐때는 if문으로 작성했지만

 

※중복된숫자와, 문자를 작성 금지하는건 어떤식으로 해야할지 잘 감이 안 잡힌다

 

public class BaseballGameDisplay {
    public void displayHint(int strike, int ball) {
        if (strike == 0 && ball == 0) {
            System.out.println("아웃");
        } else {
         System.out.println(strike +  "스트라이크" + ball + "볼");
        }
    }
}

여기서 출력값은 설정했지만 기본 뼈대인 보로가 스트라이크 구성이 어렵다

 

    private int countStrike(String input) {
        int strike = 0;

    }

    private int countBall(String input) {
        int ball = 0;

    }

스트라이크와 볼의 값이 0이라고만 설정

 

 

        while (true) {
              // 2. 올바른 입력값을 받았는지 검증
            if(!validateInput(input)) {
                System.out.println("올바르지 않은 값을 입력했습니다");
                continue;
            }

 

 

Lv2

출력값은 이렇게 개선해봤다

유효성 검사는 앞서 코드를 완성 못해서..

package numplay;

import java.util.Scanner;

public class Mian {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        while(ture) {
            System.out.println("환영합니다! 원하시는 번호를 입력해주세요");
            System.out.println("1.게임 시작하기 2.게임 기록하기 3.종료하기");

            String input = sc.nextLine();

            switch(input) {
                case "1":
                    System.out.println("< 게임을 시작합니다 >");
                    System.out.println("숫자를 입력하세요");
                    BaseballGame baseballGame = new BaseballGame();
                    baseballGame.play();
                    break;

                case "2";
                    System.out.println("< 아직 이욜할 수 없습니다 >");
                    break;

                case "3":
                    System.out.println("< 게임을 종료합니다 >");
                    break;

                default:
                    System.out.println("올바르지 않은 입력값입니다");
                    break;
            }


        }
    }
}

 

 

볼과 스트라이크를 구성하는 코드를 작성하는 부분이 아직은 어렵게 느껴져서 작성을 못했다

거기에 입력된 숫자가 중복된 숫자일때와 문자열이 입력되었을때 코드 작성하는 부분이 어려웠다