기능 목록

다리 건너기 게임 시작 안내(A)

  • "다리 건너기 게임을 시작합니다." 출력(A-1)

사용자로 부터 다리길이 입력받기(B)

  • "다리의 길이를 입력해주세요." 출력(B-1)
  • 사용자로 부터 다리길이 입력받기(B-2)
  • B-2 예외처리(B-3)

다리 생성(C)

  • 입력받은 다리 길이 만큼 다리 생성(C-1)
    • 다리 한칸당 기능구현(C-1-1)
      • bridge.BridgeRandomNumberGenerator의 generate() 활용
      • generate값이 1인경우 해당 다리의 윗칸을 U -> 위 칸만 건널 수 있음
      • generate 값이 0인경우 아래칸을 D -> 아래칸만 건널 수 있음

사용자로 부터 이동할 칸 입력받기(D)

  • "이동할 칸을 선택해주세요. (위: U, 아래: D)" 출력(D-1)
  • 사용자로 부터 이동한 입력받기(D-2)
  • D-2에 대한 예외처리(D-3)

사용자로 부터 이동할 칸의 입력에 대한 결과 판단(E)

  • D의 입력값이 사다리의 값과 같은지 비교(E-1)
    • C에서 다리를 건널 수 있는 경우 "U" 혹은 "D" 로 나타냈기에 해당 칸이 사용자의 입력값과 같은지 비교

E의 결과판단 로직에 대한 결과 출력(F)

  • 사용자가 지금까지 입력한 "이동한 칸"을 input으로 받아 출력(F-1)
    • 지금까지 입력한 "이동한 칸"을 독립적으로 구성필요(객체 분리)

게임종료 판단(G)

  • 사용자가 건너지 못한칸을 선택한 경우(G-1)
  • 사용자가 모든 다리를 건넌경우(G-2)
  • 사용자가 죽지않고 건널 다리가 남은경우(G-3)

게임 재시도(H)

(사용자의 상태가 G-1인경우)

  • 게임을 다시 시도할지 여부를 입력해주세요. (재시도: R, 종료: Q) 출력(H-1)
  • 사용자로 부터 게임종료 여부입력받기(H-2)
  • H-2 예외처리(H-3)

게임종료(I)

(사용자의 상태가 G-2, H에서 "Q"의 입력을 받은 G-1인경우)

  • 최종게임 결과 현황판 출력(I-1)
    • "최종 게임 결과" 출력(I-1-1)
    • 다리를 다 건넌케이스의 다리 현황 출력(I-1-2)
  • 성공여부 및 시도횟수 출력(I-2)
    • 게임 성공 여부: ${결과} 출력(I-2-1)
    • 총 시도한 횟수: ${총시도 횟수} 출력(I-2-2)

예외처리 목록(EXC)

  • 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 그 부분부터 입력을 다시 받는다.(공통사항)

사용자로 부터 다리길이 입력받기(B) 예외처리(EXC-B)

(숫자는 3이상 20이하의 숫자만 올 수 있음)

  • 3~20 외의 숫자를 입력한경우(EXC-B-1)
    • [ERROR] 입력 숫자는 3이상 20이하여야합니다. 출력 후 다시 입력받기
  • 숫자가 아닌 다른것이 포함되어 있는 경우(EXC-B-2)
    • [ERROR] 입력은 숫자만이 입력되어야합니다.(ex - 3)

사용자로 부터 이동할 칸 입력받기(D) 예외처리(EXC-D)

  • 입력값이 "U", "D" 이외의 모든값 예외처리(EXC-D)
    • [ERROR] 이동할 칸의 입력은 U 혹은 D 알파벳만 입력하여 주십시오. 출력 후 다시 입력받기

사용자로 부터 게임종료 여부입력받기(EXC-H-2)

  • 입력값이 "R", "Q" 이외의 모든값 예외처리(EXC-H-2)
    • [ERROR] 이동할 칸의 입력은 R 혹은 Q 알파벳만 입력하여 주십시오. 출력 후 다시 입력받기