[과제] 볼링게임_ 설계
스페어 (/)
스페어 10점 + 다음프레임 1투구 점수
거터(G)
1투구 0점
미스(-)
2투구 0점
스트라이크 (2투구에 X기입)
이전프레임 점수 + 스트라이크 10점 + 다음프레임 점수 (1투구+2투구)
- 더블 (연속 스트라이크)
n+2번 프레임의 점수 합산
퍼펙트 게임
스트라이크 연속12번 _ 300점
(조건)
* 1투구 + 2투구 <= 10
* Score 총점 최대(가산 전) 30점
* n = 10 일 때
* 가산점수 반영
스트라이크 => n+2까지
스페어 => n+1까지
** 10프레임 점수계산 **
firstNumber = 10 (strike) => secondNumber & lastNumber
firstNumber != 10 => secondNumber <= 10-firstNumber
> firstNumber + secondNumber = 10 => lastNumber 필요
> firstNumber + secondNumber != 10 => 게임끝
Frame (1<=n<=10 반복)
Score = 0
Frame =0
1. 1투구&2투구 랜덤점수 생성 ( randomNum(n) _ return )
FrameNum1 & FrameNum2
FrameNum1 <= 10
FrameNum2 <= 10 - num1
return 배열?객체? nFrameNum
2 현재프레임 합산(1투구+2투구)
Frame = FrameNum1 + FrameNum1
***
(2-1) 조건별로 가산 (다음 투구/프레임 점수)
- 스트라이크 _ n+2까지
nFrameNum1 = 10 인경우
(n+1)FrameNum1 + (n+1)FrameNum2
nScore = (n+1)Frame
- 스페어 _ n+1까지
nFrameNum1 + nFrameNum2 = 10 인경우
(n+1)FrameNum1 + (n+1)FrameNum2
nScore = (n+1)FrameNum1
3 이전 프레임 점수 합산 ( calculateScore(n) )
n = 1 인 경우
nScore =+ nFrame
n >1 인 경우
nScore =+ ( nFrame + (n-1)Frame )
=> 점수 표시
for (1~10)
randomNum(n)
if(스트라이크)
가산
if(스페어)
가산
Frame 값지정
calculateScore(n)
** 문제점
> 10프레임 점수계산 => 반복문 외부에서 따로 처리
> 더블인경우 점수계산
Nums = [ firseNumber, secondNumber ];
frameNums = [ firseNumber + secondNumber ];
plusNums = [ plus ]
Nums [ i ] [ j ] ( i < 10 , j = 0, 1)
if Nums[0][0] + Nums[0][1] === 10
if Nums[1][0] === 10 double
plusScores[0] = frameNums[1] + frameNums[2];
= Nums[1][0] + Nums[1][1] + Nums[2][0] + Nums[2][1]
else strike
plusScores[0] = frameNums[1];
= Nums[1][0] + Nums[1][1];
else if Nums[0][0] === 10 spare
plusScores[0] = Nums[1][0];