기능 구현 목록
InputView
사용자로부터 입력을 받는 역할
패키지 변경 가능
메서드의 시그니처(parameter, name)와 리턴 타입 변경 가능
사용자 값 입력을 위해 필요한 메서드 추가 가능
public int readBridgeSize()
다리의 길이를 입력받는다.
public String readMoving()
사용자가 이동할 칸을 입력받는다.
public String readGameCommand()
사용자가 게임을 다시 시도할지 종료할지 여부를 입력받는다.
OutputView
사용자에게 게임 진행 상황과 결과를 출력하는 역할
패키지 변경 가능
메서드의 이름 변경 불가
parameter나 리턴타입은 필요에 따라 추가하거나 변경 가능
값 출력을 위해 필요한 메서드 추가 가능
public void printMap()
현재까지 이동한 다리의 상태를 정해진 형식에 맞춰 출력한다. 출력을 위해 필요한 메서드의 인자(parameter)는 자유롭게 추가, 변경이 가능하다.
public void printResult()
게임의 최종 결과를 정해진 형식에 맞춰 출력한다. 출력을 위해 필요한 메서드의 인자(parameter)는 자유롭게 추가, 변경이 가능하다.
BridgeGame
다리 건너기 게임을 관리하는 클래스
클래스에 필드(인스턴스 변수) 추가 가능
패키지 변경 가능
메서드의 이름은 변경 불가
parameter와 리턴타입은 필요에 따라 추가하거나 변경 가능
게임 진행을 위해 필요한 메서드를 추가하거나 변경 가능
public void move()
사용자가 칸을 이동할 때 사용하는 메서드. 이동을 위해 필요한 메서드의 반환 타입(return type),인자(parameter)는 자유롭게 추가하거나 변경할 수 있다.
public void retry()
사용자가 게임을 다시 시도할 때 사용하는 메서드. 재시작을 위해 필요한 메서드의 반환 타입(return type),인자(parameter)는 자유롭게 추가하거나 변경할 수 있다.
BridgeMaker
다리의 길이를 입력 받아서 다리를 생성해주는 역할
클래스의 필드(인스턴스 변수) 변경 불가
메서드의 시그니처(parameter, name)와 리턴 타입 변경 불가
public class BridgeMaker {
private final BridgeNumberGenerator bridgeNumberGenerator;
public BridgeMaker(BridgeNumberGenerator bridgeNumberGenerator) {
this.bridgeNumberGenerator = bridgeNumberGenerator;
}
/**
@paramsize다리의 길이
@return입력받은 길이에 해당하는 다리 모양.위 칸이면"U",아래 칸이면"D"로 표현해야 한다.
*/
public List makeBridge(int size) {
return null;
}
}
BridgeRandomNumberGenerator
Random값 추출은 bridge.BridgeRandomNumberGenerator의 generate() 사용
이 클래스와 BridgeNumberGenerator 인터페이스의 코드는 변경 불가.
public class BridgeRandomNumberGenerator implements BridgeNumberGenerator {
private static final intRANDOM_LOWER_INCLUSIVE= 0;
private static final intRANDOM_UPPER_INCLUSIVE= 1;
@Override
public int generate() {
return Randoms.pickNumberInRange(RANDOM_LOWER_INCLUSIVE,RANDOM_UPPER_INCLUSIVE);
}
}
Constants
FrontMan (from 오징어게임)
게임 중 출력되는 멘트들을 모아놓은 클래스.
- "다리 건너기 게임을 시작합니다."
- "다리의 길이를 입력해주세요."
- "이동할 칸을 선택해주세요. (위: U, 아래: D)"
- "게임을 다시 시도할지 여부를 입력해주세요. (재시도: R, 종료: Q)"
- "최종 게임 결과"
- "게임 성공 여부: "
- "총 시도한 횟수: "
게임 중 발생하는 예외 상황들에 대한 멘트들을 모아놓은 클래스.
"[ERROR]"로 시작하는 에러 메시지를 출력한다.
Domain Logic
Application
- BridgeGame을 trigger한다.
Database
BridgeData
- BridgeMaker로 만들어진 다리에 대한 정보를 저장한다.
- 현재까지 들어온 유저의 입력을 저장한다.
- 총 시도한 횟수를 저장한다.
UI Logic
InputView
- 다리의 길이를 입력받는다.
- <예외 처리> 다리 길이는 3 이상 20 이하의 숫자이다.
- U, D중 하나의 칸을 입력받는다.
- <예외 처리> U나 D만 받을 수 있다.
- 게임 실패시, 재시작(R)하거나 종료신호(Q)를 입력받는다.
- <예외 처리> R이나 Q만 받을 수 있다.