위아래 둘 중 하나의 칸만 건널 수 있는 다리를 끝까지 건너가는 게임이다.
IllegalArgumentException를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 그 부분부터 입력을 다시 받는다.Exception이 아닌 IllegalArgumentException, IllegalStateException 등과 같은 명확한 유형을 처리한다.3
U
R
다리 건너기 게임을 시작합니다.
최종 게임 결과
[ O | | ]
[ | O | O ]
게임 성공 여부: 성공
총 시도한 횟수: 2
[, 다리의 끝은 ]으로 표시|(앞뒤 공백 포함) 문자열로 구분[ERROR] 다리 길이는 3부터 20 사이의 숫자여야 합니다.
다리 건너기 게임을 시작합니다.
다리의 길이를 입력해주세요.
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
다리 건너기 게임을 시작합니다.
다리의 길이를 입력해주세요.
3
이동할 칸을 선택해주세요. (위: U, 아래: D)
U
[ O ]
[ ]
이동할 칸을 선택해주세요. (위: U, 아래: D)
U
[ O | X ]
[ | ]
게임을 다시 시도할지 여부를 입력해주세요. (재시도: R, 종료: Q)
Q
최종 게임 결과
[ O | X ]
[ | ]
게임 성공 여부: 실패
총 시도한 횟수: 1
IllegalArgumentException를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 그 부분부터 입력을 다시 받는다.마지막인 4주차에서는 피드백이 주어지지 않았다.
받은 피드백은 함수라인이 10라인을 넘기면 안된다는 요구사항이 있었다.
이번 4주차 미션에서는 10라인을 넘지 않는다가 무척이나 어려웠다.
불필요한 함수를 너무 많이 생성한 것은 아닌가 라는 생각 또한 들었다.
그리고 특히 게임시작이라는 메서드에서 많은 고민을 했다.
public void startGame() {
while (stage < Integer.parseInt(bridgeSize)) {
runGame();
if (checkFail(stage)) {
if (!retryChoice()) {
return;
}
clearGame();
}
}
addFinishGameResult();
}
지금 생각해보면 게임 결과는 startgame에 저장하지 않고
endGame이라는 함수에 담는게 더 좋을 거 같다.
그러면 메서드안의 더욱 줄일 수 있을 것 같다.
이번 과제는 enum type 에 메시지를 꺼낼 때를 제외하고는 getter를 일절 사용하지 않았다. getter를 사용하지 않고 클래스 내부에서 처리해서 그 결과를 알려주는 방식으로 하니, 객체보안이 좋아진 것 같다.
우아한 테크코스 프리코스가 마무리 되었다. 정말 많이 배워가는 시간이었다. git 사용, 함수는 한가지 일만, 하드코딩 피하기, 객체스럽게, ui와 비즈니스 로직분리, 커밋 컨벤션, 변수 이름은 알아 볼 수 있게, enum 사용, test 등을 실제로 해보니 정말 좋았다. 또한 제한사항이 있는 환경에서 코딩을 하지 못하였는데, 이번에 경험하게 되어서 정말 좋았다.