- 사다리 게임에 참여하는 사람의 이름은 한 글자 이상 다섯 글자 이하이다.
- 이름이 다섯글자를 초과하거나 공백이면 예외를 던진다.
- Users는 User 들로 이루어진 일급 컬렉션이다.
- 중복이름이 있으면 예외가 발생한다.
- List의 size가 1이하일떄 예외가 발생한다.
- 사다리의 높이는 1 이상이다.
- 사다리의 너비는 User들의 수보다 1 적다.
- 한 층은 Point들의 집합으로 이루어진다.
- Point는 두 칸 사이를 이어주는 다리이다.
- Point의 필드 값이 true이면 생성된 다리이다.
- 생성된 다리일 경우 Point.FILLED, 미생성시 Point.EMPTY
- 한 층의 이웃한 Point는 연속해서 생성될 수 없다.
- Point의 필드 값이 true이면 생성된 다리이다.
- Ladder에서 NumberGenerator를 통해 다리 생성 결정 값 리스트를 만들어서 Floor에 전달한다.
- 전략 패턴을 이용해 TestNumberGenerator를 만들어서 테스트한다.
- User 이름을 "," 기준으로 입력 받는다.
- 사다리 층수를 입력받는다.
- 숫자만 입력 받을 수 있다.
- 이름과 사다리를 출력한다.
- README.md 업데이트
- 컨벤션 정리
- 방어적 복사 적용
- 테스트 케이스 보강
- name String 원시값 포장
- 랜덤 생성을 nextInt에서 nextBoolean 으로 변경
- Line 객체 역할을 Point enum이 대체
- given when then 스타일 테스트 작성
- 보는 사람이 읽기 쉬운 코드 작성!
- 컨트롤러 메인문 분리
- 사다리 추첨에 따른 상품을 추가한다.
- 상품 이름은 공백을 입력할 수 없다.
- 상품 컬렉션의 크기는 유저 컬렉션의 크기와 같다.
- Username 이나 all 을 입력 받고 결과를 출력한다.
- all을 입력받을 떄까지 입력은 반복해서 받는다.
- 없는 유저 이름을 입력하면 안내 메시지를 출력한다.
- all 이라는 유저 이름을 입력 받지 못하게 한다.
- 결과 도출 로직 구현
- users내의 인덱스를 파라미터로 받아서 작동한다.
- 한 층에서 좌우의 Point 존재 여부를 확인하고 이동한다.
- 마지막 층에 도달하면 해당 인덱스의 상품을 출력한다.