- 야구 게임을 진행할 팀 생성
- 프로그램이 시작되면 게임시작 메시지 출력
- 랜덤하게 스트라이크 / 볼 / 안타 / 아웃 네 가지 중 한 결과가 출력
- 스트라이크인 경우
- 스크라이크 카운트 1 증가
- 스트라이크 3회 누적되면 1아웃되게 하기
- 볼인 경우
- 볼 카운트 1 증가
- 볼 4회 누적되면 1안타 되게 하기
- 안타인 경우
- 안타 카운트 1 증가
- "다음 타자가 타석에 입장했습니다." 메시지 출력
- 경기 진행되고 다음 타자 차례가 됨 ( 현재의 안타, 아웃 카운트는 유지 , 스트라이크와 볼 카운트는 초기화)
- 아웃인 경우
- 아웃 카운트 1 증가
- 3 아웃이 아니라면 , "다음 타자가 타석에 입장했습니다." 메시지 출력
- 3 아웃이 아니라면 , 경기 진행되고 다음 타자 차례가 됨 ( 현재의 안타, 아웃 카운트는 유지 , 스트라이크와 볼 카운트는 초기화)
- 3 아웃이라면 , 안타, 아웃, 스트라이크 , 볼 카운트 모두 유지
- 누적된 스트라이크(S), 볼(B), 아웃(O) 상황을 출력
- 현재 전체 안타 수 출력 (자유롭게 구현한 부분 입니다.)
- 3 아웃인 경우 게임 종료하기
- 게임 종료할 때 최종 전체 안타수 출력, "GAME OVER" 메시지 출력
-
입력
- 메뉴 입력
- 메뉴 1 : 데이터 입력
- 메뉴 2 : 데이터 출력
- 데이터 입력 안한 경우 입력부터 하게끔 처리
- 메뉴 3 : 시합 시작
- 메뉴 4 : 게임 나가기
- 데이터 입력
- 팀 이름 입력 (팀 개수는 총 2개)
- 선수 데이터 입력 (각 팀마다 입력)
- 9명의 타자 데이터 입력
- 타자 이름 & 타율 입력
- 타율 h는 0.1 < h < 0.5이고 소수 세째 자리까지 입력한다.(ex: 0.347,0.120)
- 조건 안 맞는 타율인 경우 다시 입력
- 타자 이름 & 타율 입력
- 1명의 투수 데이터 입력
- 투수 이름 입력
- 9명의 타자 데이터 입력
- 각 입력마다 저장 ( 에러가 없는 경우 )
- 메뉴 입력
-
저장
- 팀 이름 저장
- 선수 데이터 저장
- 타자는 순번, 이름, 타율을 저장
- 투수는 이름을 저장
-
출력
- 게임 메시지 출력
- 메뉴 출력
- 메뉴 옵션
- 메뉴 선택
- 데이터 출력
- 각 팀의 팀이름 출력
- 각 팀의 선수 데이터 출력
- 타자는 순번, 이름, 타율을 출력
- 투수는 이름을 출력
- 경기 상황 출력
- 경기 진행상황 출력
- 팀 공격 출력
- 타자 정보 출력
- 타저 순번, 타자 이름
- 스트라이크 / 볼 / 안타 / 아웃 네 가지 중 한 결과가 출력
- 누적된 스트라이크(S), 볼(B), 아웃(O) 상황을 출력
- 경기의 최종 결과 출력
- 경기 진행상황 출력
- 에러 메시지 출력
- 잘못된 입력인 경우 다시 입력하라는 메시지 출력
-
처리
- 시합은 6회까지 진행
- 각회는 회초/ 회말로 나뉨. 회초에는 팀1, 회말에는 팀2의 타자가 경기 진행.
- 3아웃이 될 경우 공격팀의 공격이 끝남. 회초 공격, 회말 공격이 끝나면 다음 회로 넘어감.
- 타자는 1번 타자부터 차례로 타석에서 타격을 수행
- 안타 / 아웃시 다음 선수가 타격을 수행
- 9번 타자 이후에는 1번 타자로 돌아감
- 타자의 타격은 안타 / 스트라이크 / 볼 / 아웃 중 하나의 결과를 갖음
- 타자의 타율의 h라고 할 때 각각의 확률
- 안타: h, 0.1 < h < 0.5
- 스트라이크: (1 - h) / 2 - 0.05
- 볼: (1 - h) / 2 - 0.05
- 아웃: 0.1
- 타자의 타율의 h라고 할 때 각각의 확률
- 세번의 스트라이크는 아웃, 네번의 볼은 안타
- 매 회에서 네번의 누적된 안타는 1 득점, 이후부터는 1안타당 추가로 1득점이 발생
- 시합은 6회까지 진행
-
시합시합 시작 이후 각 타석의 상태를 전광판의 형태로 화면에 출력
- 각 팀 이름 , 회/말 점수 , 전체 누적 점수 출력
- 각 팀 선수 번호, 이름 출력
- 현재 회초/말 타자의 SBO(스트라이크, 볼, 아웃) 카운트 출력
- 각 팀의 총 누적 투구 수 출력
- 각 팀의 총 누적 삼진 수 출력
- 각 팀의 총 누적 안타 수 출력
-
전광판은 사용자의 입력을 받아 한 번에 한 결과씩 보여 주기
- 사용자 입력하라는 안내말 출력 (다음 투구 보기(enter) or 스킵하고 X회말 후 투구보기(숫자+enter) ?)
- 편의를 위해 사용자 입력 시 에러 처리 등의 기능을 구현
-
특정 회말까지의 스킵 기능을 구현
-
6회말 시작 시 팀2가 승리하고 있다면 곧바로 경기가 종료