- "다리 건너기 게임을 시작합니다." 출력(A-1)
- "다리의 길이를 입력해주세요." 출력(B-1)
- 사용자로 부터 다리길이 입력받기(B-2)
- B-2 예외처리(B-3)
- 입력받은 다리 길이 만큼 다리 생성(C-1)
- 다리 한칸당 기능구현(C-1-1)
- bridge.BridgeRandomNumberGenerator의 generate() 활용
- generate값이 1인경우 해당 다리의 윗칸을 U -> 위 칸만 건널 수 있음
- generate 값이 0인경우 아래칸을 D -> 아래칸만 건널 수 있음
- 다리 한칸당 기능구현(C-1-1)
- "이동할 칸을 선택해주세요. (위: U, 아래: D)" 출력(D-1)
- 사용자로 부터 이동한 입력받기(D-2)
- D-2에 대한 예외처리(D-3)
- D의 입력값이 사다리의 값과 같은지 비교(E-1)
- C에서 다리를 건널 수 있는 경우 "U" 혹은 "D" 로 나타냈기에 해당 칸이 사용자의 입력값과 같은지 비교
- 사용자가 지금까지 입력한 "이동한 칸"을 input으로 받아 출력(F-1)
- 지금까지 입력한 "이동한 칸"을 독립적으로 구성필요(객체 분리)
- 사용자가 건너지 못한칸을 선택한 경우(G-1)
- 사용자가 모든 다리를 건넌경우(G-2)
- 사용자가 죽지않고 건널 다리가 남은경우(G-3)
(사용자의 상태가 G-1인경우)
- 게임을 다시 시도할지 여부를 입력해주세요. (재시도: R, 종료: Q) 출력(H-1)
- 사용자로 부터 게임종료 여부입력받기(H-2)
- H-2 예외처리(H-3)
(사용자의 상태가 G-2, H에서 "Q"의 입력을 받은 G-1인경우)
- 최종게임 결과 현황판 출력(I-1)
- "최종 게임 결과" 출력(I-1-1)
- 다리를 다 건넌케이스의 다리 현황 출력(I-1-2)
- 성공여부 및 시도횟수 출력(I-2)
- 게임 성공 여부: ${결과} 출력(I-2-1)
- 총 시도한 횟수: ${총시도 횟수} 출력(I-2-2)
- 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 그 부분부터 입력을 다시 받는다.(공통사항)
(숫자는 3이상 20이하의 숫자만 올 수 있음)
- 3~20 외의 숫자를 입력한경우(EXC-B-1)
- [ERROR] 입력 숫자는 3이상 20이하여야합니다. 출력 후 다시 입력받기
- 숫자가 아닌 다른것이 포함되어 있는 경우(EXC-B-2)
- [ERROR] 입력은 숫자만이 입력되어야합니다.(ex - 3)
- 입력값이 "U", "D" 이외의 모든값 예외처리(EXC-D)
- [ERROR] 이동할 칸의 입력은 U 혹은 D 알파벳만 입력하여 주십시오. 출력 후 다시 입력받기
- 입력값이 "R", "Q" 이외의 모든값 예외처리(EXC-H-2)
- [ERROR] 이동할 칸의 입력은 R 혹은 Q 알파벳만 입력하여 주십시오. 출력 후 다시 입력받기