오늘은 본격적으로 코딩을 시작했다.
우선 먼저 computer.java와 player.java를 구현했는데, 가장 먼저 고민한 점은 Computer 도메인에서 컴퓨터가 숫자를 랜덤으로 뽑아내는 것을 여기에서 하고 싶지 않았다.
뭔가 plyaer 코드에 비해서 상대적으로 너무 복잡해보인다고 해야하나..? 그런게 싫었고, 넌 지금 전혀 util 하고 있지 않아. 이 글을 보고나서부터는 util로 분리하고 싶었다.
그래서 우선은 Computer 코드에 숫자를 제너레이션 할 수 있는 ComputerNumberGenerator를 임포트하고 사용하는 것으로 코드를 구현하고, 내일 실제적인 generator 코드를 짜기로 했다.
그리고 Player는 간단히 사용자가 입력한 것을 가지고 있을 수 있도록 구현했다.
그 다음 예외처리를 구현했는데, 나는 플레이어가 입력하는 숫자에 관련한 예외와 다시 게임을 시작하기 위해 입력하는 숫자에 관련한 예외로 우선 나누었다.
우선 플레이어가 입력하는 숫자 예외를 나눴는데, 내가 생각한 것만큼 구현이 안되는 문제가 생겼다.
자바 자체가 한 코드 안에 써넣은 클래스들은 순서대로 읽어들여지는데, 이 과정에서 다른 것이 앞에 오면 중복된 수가 아니라 일단 숫자 개수가 많은 것으로 잘못읽히는 문제가 생겼다. 그래서 어쩔 수 없이 순서를 고려해 최대한 로직에서 깨지지 않도록 구현하는 방향으로 exception을 과하게 나누지 않았다.
그리고 게임 재시작 시의 예외는 앞서 구현한 예외 코드들을 참고해서 조금만 바꿔서 비슷하게 구현했다.
결국 가장 까다로울 것이라 생각했던 예외 처리는 구현을 초읽기 했다.
그리고 실제로 게임의 과정에 볼과 스트라이크 값을 파악하는 GameNumberCheckService를 구현했다.
스트라이크와 볼의 개수를 카운트할 수 있도록 코드를 짜고, 맨 아래에 초기화를 해주는 reset을 사용했다.
혹시나 게임을 껐다 다시 켰을때 수가 누적되는 오류가 발생되지 않도록 미연에 방지하는 차원으로 사용했다!
마지막으로 util의 StringToArrayList를 구현했다. 이건 플레이어가 입력한 값을 컴퓨터가 1~9 안의 숫자로 인식할 수 있도록 하는 코드로 간단하게 구현했다. 기본적으로 스페이스나 엔터같은 걸로 입력을 구분하는 요구사항이 아니었기 때문에 구분점이 없고, 그러면 이걸 123이렇게 문자열로 입력된 값을 리스트로 하나씩 쪼개서 넣어서 확인하는 방식을 사용해야겠다 생각했기 때문에 이렇게 했다.
그런데, 그렇게 많은 걸 하지는 못한 것 같은데… 하루가 다 가버렸다….😆
어쩌지 나 진짜 다 할 수 있을까…?
♻️ 서비스 패키지 구현하기
♻️ 뷰 패키지 구현하기