2009. 1. 14. 22:26

두 번째 퀴즈: 야구게임

목적

숫자야구게임용 엔진개발

숫자야구게임룰

컴퓨터는 미리 3개의 1~9사이의 숫자를 가지고 있다. (ex. 1 3 5)
사용자는 컴퓨터가 가지고 있는 숫자를 정확히 맞춰야 한다.
사용자는 미리 지정된 만큼의 횟수동안 시도할 수 있다. 지정된 횟수까지 시도해서도 맞추지 못하면 "out"이다.
사용자는 매번 3개의 숫자를 넣고 컴퓨터는 미리 가지고 있는 3개의 숫자와 비교해서 다음의 응답을 해야한다.
1) 3개의 숫자가 맞고 위치도 맞으면 "hit"
2) 1)이 아닐경우 입력한 숫자가 컴퓨터가 가지고 있는 숫자 중의 하나이고 그 위치도 맞으면 strike가 1씩 올라간다.
예를 들어 컴퓨터의 숫자가 1 3 5인데 사용자가 입력한 숫자가 2 3 4이면 "1 strike"이고 2 3 5를 입력했다면 "2 strikes"이다.
3) 숫자는 맞으나 위치가 다르면 ball이 1씩 올라간다. "1 ball", "2 balls", "3 balls"

예) 컴퓨터의 숫자 1 3 5
1 2 3 => "1 strike 1 ball"
5 1 3 => "0 strike 3 balls"
1 5 3 => "1 strike 2 balls"
6 7 8 => "0 strike 0 ball"
1 3 6 => "2 strikes 0 ball"
1 3 5 => "hit"

요구사항

  • BaseballGame클래스를 메인클래스로 작성한다. 완성된 코드는 여러개의 클래스로 구성해도 상관없다.
  • 게임은 여러번 진행할 수 있다.
  • 게임을 시작하기 위해서는 컴퓨터가 가진 숫자와 최대 시도횟수가 등록되어있어야 한다.
  • 게임이 시작되면 이번에 몇번째 게임인지 정보를 돌려준다.
  • 2번째 게임부터의 컴퓨터의 숫자는 이전 게임에서 사용한 것과 동일한 것을 쓸 수 없다. 단 최대 시도횟수는 같아도 상관없다.
  • 게임이 종료되는 것은 "hit" 또는 "out"되었을 때이다.
  • 게임이 종료된 후 다시 게임을 시작하기 전에는 게임을 시도할 수 없다.
  • 게 임 중에는 게임의 현재 상태를 요청할 수 있다. 게임상태는 최대시도가능 횟수, 현재 시도한 횟수, 그리고 현재까지의 최고기록의 정보를 돌려준다. 최고기록은 strike는 3점, ball은 1점으로 계산해서 그 중 최고점수를 가진 시도의 정보(몇번째시도 와 시도한 숫자)를 돌려준다. 최고기록이 같은 경우가 2번이상 있으면 모두 돌려준다.
  • 게임의 최고기록을 요청하면 지금까지 진행된 게임중 가장 적은 시도로 맞춘 결과(시도횟수)를 보여준다. 게임의 최고기록을 요청하는 것은 게임이 종료된 이후에만 가능하며 한번도 게임을 시도하지 않았으면 결과를 요청할 수 없다.
  • 모든 단서조항(...한다, ...할 수 없다, ...일경우는)에 위배되는 경우는 적절한 Exception을 던져야 한다.
  • 각 결과는 적절한 형태로(String 또는 임의의 Object) 리턴되면 된다(화면에 출력될 필요는 없다. 엔진이니까. UI는 이번 엔진을 이용해서 나중에 따로 개발할 것이다)

야구게임 엔진을 만든다는 기분으로...
Trackback 0 Comment 3
  1. is윤군 2009.01.14 23:21 신고 address edit & del reply

    난이도가 올라가 보이네욥;;ㅋㅋ

  2. 김재진 2009.01.15 08:17 신고 address edit & del reply

    야구게임이라 예전에 ibm dw 에서 물개선생님 글을 보고 시도해 볼 까 몇번 생각했던 거네요 야구게임 ㅎㅎ 어려울 것 같지만 재밌겠네요.. 리뷰 끝내고 시작해야겠습니다 ㅎ

  3. 소내기 2009.01.17 22:50 address edit & del reply

    http://sonegy.egloos.com/tag/%EC%95%BC%EA%B5%AC%EA%B2%8C%EC%9E%84 예전에 한번 풀어봤는데요. 블로그에는 다 정리를 못했네요. 이번에 한번 다시 처음부터 해봐야겠네요.