본문 바로가기
TDD 연습문제

볼링점수 계산법

by [김경민]™ ┌(  ̄∇ ̄)┘™ 2013. 7. 26.
728x90

- 훈련규칙 ( http://elaia.tistory.com/3 )

  1. 한 메소드에 오직 한 단계의 들여쓰기만 한다.
  2. else 예약어를 쓰지 않는다.
  3. 모든 원시값과 문자열을 포장한다.
  4. 한 줄에 점을 하나만 찍는다.
  5. 줄여쓰지 않는다.
  6. 모든 엔티티를 작게 유지한다.
  7. 2개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다.
  8. 제일 클래스(first-class)  콜렉션을 쓴다.
  9. getter/setter/property를 쓰지 않는다.

- 목표 ( http://pann.news.nate.com/info/312194595 , http://www.slipp.net )

볼링점수를 계산하는 프로그램을 작성
 

- 볼링점수계산

Strike인 경우는 다음 두번 투구 수의 점수를 합한다. 따라서 이후 두 번 더 투구할 때까지 strike한 프레임의 점수는 계산되지 않는다.

Spare인 경우는 다음 한번 투구 수의 점수를 합한다. 따라서 이후 한 번 더 투구할 때까지 spare한 프레임의 점수는 계산되지 않는다.

마지막 프레임의 경우는 위의 두 가지 조건을 만족하기 위해서 Strike이면 2번, Spare면 한번의 투구가 가능하다.


- 요구사항

볼링게임(BowlingGame)클래스의 인스턴스를 만들면 새 게임이 시작한 것으로 간주한다.(명시적인 start는 필요없음)

현재 몇번째 프레임의 몇번째 투구(첫번~세번째)를 할 차례인 조회해 볼 수 있다. 게임이 끝났으면 GameOverException을 던진다. (Frame번호 + 그 프레임의 시도횟수)

현재까지 진행된 프레임결과와 각 프레임 점수를 보여준다. 확정되지 않은 점수는 표시하지 않아도 된다.

한번 투구를 하는 메소드(roll)를 만들고 쓰러뜨린 핀의 수를 파라메터로 넘긴다. 게임이 끝났으면 GameOverException을 던진다.

기호) Stike : X Spare : / Gutter: - 그외 : 0~9

볼링 한 게임에 대한 점수판을 구현해야 한다.

볼링 게임을 진행한다고 가정하고 볼링 핀을 입력하면 다음과 같은 결과 화면을 볼 수 있어야 한다.

아래 화면은 게임이 끝났을 때의 결과 화면이고, 게임이 진행 중에도 아래와 같은 점수 판을 볼 수 있어야 한다.


- 연습

https://github.com/formin/BowlingGame.git


728x90

'TDD 연습문제' 카테고리의 다른 글

TDD의 리듬  (0) 2013.07.26

댓글