우아한 테크코스 4주차
2022/12/28
6 min read
RETROSPECT
시간은 엄청 빠르게 흘러가는거 같다 벌써 마지막 주차라니....
마지막 주차 문제는 Bridge였다 쉽게 말하면 오징어 게임 다리 건너기 게임이였다
기능 요구 사항
위아래 두 칸으로 이루어진 다리를 건너야 한다. 다리는 왼쪽에서 오른쪽으로 건너야 한다. 위아래 둘 중 하나의 칸만 건널 수 있다. 다리의 길이를 숫자로 입력받고 생성한다. 다리를 생성할 때 위 칸과 아래 칸 중 건널 수 있는 칸은 0과 1 중 무작위 값을 이용해서 정한다. 위 칸을 건널 수 있는 경우 U, 아래 칸을 건널 수 있는 경우 D값으로 나타낸다. 무작위 값이 0인 경우 아래 칸, 1인 경우 위 칸이 건널 수 있는 칸이 된다. 다리가 생성되면 플레이어가 이동할 칸을 선택한다. 이동할 때 위 칸은 대문자 U, 아래 칸은 대문자 D를 입력한다. 이동한 칸을 건널 수 있다면 O로 표시한다. 건널 수 없다면 X로 표시한다. 다리를 끝까지 건너면 게임이 종료된다. 다리를 건너다 실패하면 게임을 재시작하거나 종료할 수 있다. 재시작해도 처음에 만든 다리로 재사용한다. 게임 결과의 총 시도한 횟수는 첫 시도를 포함해 게임을 종료할 때까지 시도한 횟수를 나타낸다. 사용자가 잘못된 값을 입력한 경우 throw문을 사용해 예외를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 그 부분부터 입력을 다시 받는다.
실행 결과 예시
다리 건너기 게임을 시작합니다. 다리의 길이를 입력해주세요. 3 이동할 칸을 선택해주세요. (위: U, 아래: D) U [ O ] > [ ] 이동할 칸을 선택해주세요. (위: U, 아래: D) U [ O | X ] > [ | ] 게임을 다시 시도할지 여부를 입력해주세요. (재시도: R, 종료: Q) R 이동할 칸을 선택해주세요. (위: U, 아래: D) U [ O ] > [ ] 이동할 칸을 선택해주세요. (위: U, 아래: D) D [ O | ] > [ | O ] 이동할 칸을 선택해주세요. (위: U, 아래: D) D [ O | | ] > [ | O | O ] 최종 게임 결과 [ O | | ] > [ | O | O ] 게임 성공 여부: 성공 총 시도한 횟수: 2
과제 첫 인상
점점 갈수록 매서드 분리의 중요성이 늘어가는것 같다
이번 주차에는 무려 함수길이가 10라인를 넘어서는 안된다!! 매서드의 파라미터 개수도 최대 3개로 제한된다 InputView,OutputView,BridgeGame,BridgeMaker 4개의 클래스의 요구사항을 지키어 구현해야한다
이번 과제에서는 처음 설계부터 정말 오래 걸렸던것같다 사용해야할 클래스도 많고 클래스마다 요구사항이 있어 쉽지않았다
문제풀이 후
- 매서드의 길이를 10라인으로 제한하여서 많이 분리를 하게 되었다 함수가 한 가지의 일만 하도록 하는 건 좋지만 너무 라인이 적어서 힘들었다...(이렇게 까지 해야만했나🤮)
- MVC는 여전히 아직 어려웠습니다. 그래도 처음보다는 많이 늘은게 보입니다
- 첫 주차와 비교해서 설계하는 역량이 많이 늘었던거같습니다
- Error시에 [ERROR] 문구를 앞에 붙여주어야하는데 Error클래스를 만들어서 기본 prefix값으로 [ERROR]를 설정하여 했으면 어땠을까 생각이 들었습니다
마지막
마지막 과제까지 테스트를 통과하고 제출을 완료했습니다. 객체지향 프로그래밍을 처음 접하게되었고 클린코드,코드컨벤션적용,커밋컨벤션 등등 많은 부분을 배웠던 기회였습니다. 기회가 된다면 본 교육과정에 참여하여 깊게 공부하고싶네요🫶🏻