2009-06-05 3 views
1

간단한 C# 콘솔 응용 프로그램을 프로그래밍하고 있습니다.C# Console App - OO 수학/생각 문제

사양은 다음과 같습니다

게임 10 핀의 전체 랙으로 시작 열 개 프레임으로 구성되어 있습니다. 각 프레임에는 공을 두 번 배달하여 가능한 한 10 개의 핀을 무너 뜨립니다. 첫 번째 공에서 모든 핀을 쓰러 뜨리면 파업이라고 부릅니다. 스트라이크의 경우 다음 두 볼의 값을 보너스로 받기 때문에 스코어가 즉시 추가되지는 않습니다. 예를 들어 첫 번째 프레임에서 첫 번째 프레임에서 스트라이크를 기록한 다음 두 번째 프레임에서 7과 1을 누르면 첫 번째 프레임에 대해 18 (10 + 7 + 1), 두 번째 프레임에 8을 얻어 총 2 프레임 후에 26 첫 번째 공에서 핀 중 일부를 쓰다듬고 두 번째 공에서 핀의 나머지 부분을 쓰러 뜨리면 스페어라고합니다. 또한, 스페어의 경우 다음 보너스 값을 보너스로 받음으로써 점수가 즉시 추가되지는 않습니다. 예를 들어 첫 번째 프레임에서 여백을 채우고 6과 4를 말한 다음 두 번째 프레임에서 8과 1을 얻으면 첫 번째 프레임에 대해 18 (6 + 4 + 8)을 얻고 9 두 번째 프레임의 경우 총 27 개가됩니다.

코드 등을 작성하는 방법을 이해합니다. 그러나이 점수 시스템을 수행하는 가장 좋은 방법은 내 머리를 잡지 못하고 조언이 필요합니다. 분명히 새로운 객체가 각 플레이어에 대해 생성되지만, 처음에 간단한 프로그래밍 문제처럼 생겼던 것을 어떻게 얻을 것인지 잘 모르겠습니다.

도움을 주시면 감사하겠습니다.

감사

+8

스모키, 이것은 '남'이 아닙니다. 이것은 볼링입니다. 규칙이 있습니다. – jason

+0

+1 : 방금 "볼링"이라고 말하지 않고 볼링에 대해 설명했음을 깨달았습니다. 저에게, 그것은 들썩 들썩하고 환상적입니다. – Eric

답변

5

볼링에서 타격과 스페어를 "마크"라고합니다. 이것을 사용하십시오!

enum Marks { Open, Spare, Strike }; 

이렇게하면 프레임마다 어떤 유형의 마크가 있는지 확인할 수 있습니다. 공을 던진 후 마지막 두 프레임을 확인하고 점수를 업데이트하십시오. 그런 다음 점수를 합산하십시오.

다른 참고 사항 : 프레임 별 점수를 표시하는 경우 프레임 점수를 일련의 경고 기호로 표시하지 마십시오 (예 : 연속 된 4 개의 경고는 프레임 1에 "30"이 표시되지 않아야 함).). 스페어 또는 오픈이 총계를 표시 할 때까지 기다립니다. 그것은 다른 것을하기에는 부적절한 득점이고, 비디오 게임이 그것을 인식하지 못한다면 그것은 나에게 지옥을 빠져 나간다.

+1

던짐이 어떤 핀도 두드리지 않는다는 것을 잊지 말라. 그것은 '0'이 아니라 '-'로 표시되어있다. 또한 플레이어가 프레임의 첫 번째 throw에서 스플릿을 얻은 경우 점수에 동그라미가 표시됩니다 (예, 콘솔 앱이지만 규칙은 규칙). 일부 사용자는 스플릿에서 핀을 주석으로 추가합니다. – plinth

4

글쎄, 당신이 진짜가 심층 볼링 게임 OOP와 TDD를 다루는 토론, 나는이 전체 기사 읽기 제안하려는 경우 : 그렇지 않으면

http://www.objectmentor.com/resources/articles/xpepisode.htm

을, 맨 아래로 스크롤하여 어떻게 구현했는지 확인할 수 있습니다.

0

이와 같은 문제를 해결할 때 유용한 플래그가있는 것으로 나타났습니다. 플래그에 의해, 뭔가가 참인지 거짓인지를 알려주는 작은 부울 또는 int 변수를 의미합니다. 다음과 같이 :

bool isStrike; 
bool isSpare; 

이러한 변수를 개체에 넣고 사람이 스트라이크를 받으면 isStrike를 true로 설정합니다.

점수를 계산할 때 다음 플래그를 확인하여 계산 시스템을 변경할 수 있습니다.

if(isStrike) 
    // do not calculate the score until the other two bowls are made. 
if(isSpare) 
    // do not calculate the score until one more bowl is made 

그런 다음 해당 그릇을 반영하여 점수 유지 변수를 업데이트합니다.

참고 : 점수 유지가 볼링에서 어떻게 작동하는지 모르지만 여기 정보가 일반적이라고 생각합니다.

관련 문제