이번 프로젝트는 내가 야구를 좋아해서 미니 야구게임으로 토이프로젝트를 만들어보았다.
😺 깃허브 링크 : https://github.com/chandeveloper/MiniBaseBall_Game
📺 유튜브 시연 영상

우선 클래스는 총 3개가 나왔다.
첫번째로 main메서드 포함된 Game클래스
두번째는 홈팀 클래스
세번째는 어웨이팀 클래스 이다.
package baseballgame;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Game {
// main메서드 생성 throws IOException으로 예외처리
public static void main(String[] args) throws IOException {
// BufferedReader 입력받기 위한 준비물
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 홈팀 과 어웨이팀의 객체 생성
HomeTim homeTim = new HomeTim();
AwayTim awayTim = new AwayTim();
while (true) {
// 게임 시작
System.out.println("☆★☆★ 미니 야구 게임 ☆★☆★");
System.out.println("1. 게임시작");
System.out.println("2. 게임종료");
System.out.print("3. 입력 >> ");
// int값을 입력받아 게임을 시작/종료 한다.
int start = Integer.parseInt(br.readLine());
System.out.println(); // 한줄 띄어쓰기
if (start == 1) {
// 팀 이름 설정
System.out.println("※※ 팀 이름 설정 ※※");
System.out.println();
System.out.println("홈팀 이름설정");
System.out.print("입력 >> ");
// 값을 입력받아 homeTim객체의 tim1변수에 저장
homeTim.tim1 = br.readLine();
System.out.println();
System.out.println("어웨이팀 이름설정");
System.out.print("입력 >> ");
// 값을 입력받아 awayTim객체의 tim2변수에 저장
awayTim.tim2 = br.readLine();
System.out.println();
// 경기이닝 수 입력
System.out.print("이닝 수 입력 >> ");
int n = Integer.parseInt(br.readLine());
System.out.println(); // 한줄 띄어쓰기
// n이닝만큼 경기를 진행
for (int i = 1; i <= n; i++) {
System.out.println("※※※※※ " + i + "회초 ※※※※※");
awayTim.a_hit(); // away팀의 i회초 공격 메서드
for (int j = 0; j < 1; j++) {
System.out.println("◈◈◈ 3아웃 공수교대 ◈◈◈");
System.out.println(); // 한줄 띄어쓰기
System.out.println("※※※※※ " + i + "회말 ※※※※※");
homeTim.h_hit(); // home팀의 i회말 공격 메서드
}
System.out.println("◈◈◈ 3아웃 공수교대 ◈◈◈");
}
} else if (start == 2) {
// 게임종료를 선택했을때
System.out.println("게임을 종료합니다");
break;
} else {
// 게임시작, 게임종료가 아닌걸 눌렀을때
System.out.println("잘못눌렀습니다");
System.out.println("다시 입력하세요");
System.out.println(); // 한줄 띄어쓰기
continue;
}
// 게임결과 메소드
System.out.println("※※※※※ 경기가 종료되었습니다 ※※※※※");
if (homeTim.hscore > awayTim.ascore) { // HomeTim이 이겼을때
System.out.println("양 팀 치열한 승부끝에");
System.out.println(homeTim.tim1 + "가(이) 승리하였습니다");
System.out.println("◈◈ 최종스코어 ◈◈");
System.out.println(homeTim.tim1 + " : " + homeTim.hscore);
System.out.println(awayTim.tim2 + " : " + awayTim.ascore);
} else if (homeTim.hscore < awayTim.ascore) { // AwayTim이 이겼을때
System.out.println("양 팀 치열한 승부끝에");
System.out.println(awayTim.tim2 + "가(이) 승리하였습니다");
System.out.println("◈◈ 최종스코어 ◈◈");
System.out.println(homeTim.tim1 + " : " + homeTim.hscore);
System.out.println(awayTim.tim2 + " : " + awayTim.ascore);
} else {
System.out.println("양 팀 치열한 승부끝에 "); // 무승부일때
System.out.println("결과는 무승부입니다.");
System.out.println("◈◈ 최종스코어 ◈◈");
System.out.println(homeTim.tim1 + " : " + homeTim.hscore);
System.out.println(awayTim.tim2 + " : " + awayTim.ascore);
}
break;
} // while문 끝
}
}
package baseballgame;
import java.util.Random;
import java.util.Scanner;
public class HomeTeam {
static String hTeam; // 홈팀 이름을 입력받아 저장할 static변수
static int hScore; // 홈팀 점수를 저장할 static변수
public void h_hit() {
Random r = new Random(); // 랜덤클래스를 이용해 변수 r 생성
Scanner sc = new Scanner(System.in);
int percent = 0; // 타격했을때 결과값의 확률을 부여할 변수
int speed = 0; // 구속을 담을 변수
int outCnt = 0; // 아웃카운트를 담을 변수
boolean[] base; // boolean타입 base라는 배열선언 해서
base = new boolean[4]; // 홈(0번방), 1(1번방), 2(2번방), 3(3번방), 루의 값을 넣어준다
// outCnt가 2이하일때까지 공격을 반복한다
while (outCnt <= 2) {
System.out.println("◆◆◆ " + hTeam + " 공격 ◆◆◆");
// 타격전 주자가 몇루에 있는지를 출력할 for문
/*
만루일때 : base배열의 1, 2, 3번방이 전부 true면 주자 만루 출력
만루가 아닐때 : base i번방이 true이면 주자 i루 출력
*/
for (int i = 1; i <= 3; i++) {
if (base[1] && base[2] && base[3]) {
System.out.println("주자 만루 풀베이스");
} else if (base[i]) {
System.out.println("주자 : " + i + "루");
}
}
// 게임중 플레이화면
System.out.println("아웃카운트 : " + outCnt + "아웃");
System.out.println("1. 타격하기");
System.out.println(HomeTeam.hTeam + " : " + HomeTeam.hScore);
System.out.println(AwayTeam.aTeam + " : " + AwayTeam.aScore);
System.out.print("입력 >> ");
int hit = sc.nextInt();
System.out.println(); // 한줄 띄어쓰기
// hit가 1이면 if문 실행
if (hit == 1) {
// 투수가 공을 던져서 타자한테 가기까지의 시간을 표현한 Thread.sleep문
System.out.println("투수 와인드업!!");
System.out.println();
try {
Thread.sleep(1700);
} catch (InterruptedException e) {
e.printStackTrace();
}
percent = r.nextInt(100) + 1; // 타격했을때 나올 확률을 Random클래스로 구할 변수
speed = r.nextInt(10) + 150; // 구속을 Random클래스로 구할 변수
// 1~40의 숫자가 나오면 아웃 / 40% 확률
if (percent >= 1 && percent <= 40) {
outCnt++; // 아웃이면 outCnt가 1씩 증가
System.out.println("타자 쳤습니다!!!");
System.out.println("타격결과 : 타자 아웃!!");
System.out.println("구속 : " + speed + "km");
System.out.println("======================");
System.out.println();
}
// 41~60의 숫자가 나오면 안타 / 20% 확률
if (percent >= 41 && percent <= 60) {
System.out.println("타자 쳤습니다!!!");
System.out.println("★타격결과 : 안타★");
System.out.println("구속 : " + speed + "km");
System.out.println("======================");
System.out.println();
/*
안타일때 : for문으로 3번 반복 하는데 k는 3이고 3, 2, 1 역순으로 배열을 확인해준다.
k == 3 : base의 k번방(3루)이 true이면 주자는 홈인
aScore++ 후 k번방(3루)은 false처리
k == 2, 1 : base의 k번방(2루, 1루)이 true일 때는 false처리 후
k번방(2루, 1루)에 1을 더해서 true를 준다.
타자주자 : 타자는 1루로 진루(1번방에 true)
*/
for (int k = 3; k >= 1; k--) {
if (base[k]) {
if (k == 3) { // 3루에 있는 선수는 홈인.
hScore++; // 동시에 점수 획득.
base[k] = false; // 3루는 비워진다.
continue;
}
// 1, 2루인 경우 1루씩 진루하고 원래 있던 자리는 비워진다.
base[k] = false;
base[k + 1] = true;
}
}
base[1] = true; // 타자는 1루로 진루.
}
// 61~77의 숫자가 나오면 2루타 / 17% 확률
if (percent >= 61 && percent <= 77) {
System.out.println("타자 쳤습니다!!!");
System.out.println("★★타격결과 : 2루타★★");
System.out.println("구속 : " + speed + "km");
System.out.println("======================");
System.out.println();
/*
2루타일때 : for문으로 3번 반복 하는데 k는 3이고 3, 2, 1 역순으로 배열을 확인해준다.
k == 3, 2 : base의 k번방(3루, 2루)이 true이면 주자는 홈인
aScore++ 후 k번방(3루, 2루)은 false처리
k == 1 : base의 k번방(1루)이 true일 때는 false처리 후
k번방(1루)에 2를 더해서 true를 준다.
타자주자 : 타자는 2루로 진루(2번방에 true)
*/
for (int k = 3; k >= 1; k--) {
if (base[k]) {
if (k == 3 || k == 2) { // 3루 혹은 2루에 있는 선수는 홈인.
hScore++; // 동시에 점수 획득.
base[k] = false; // 2루 또는 3루는 비워진다.
continue;
}
// 1루인 경우 3루로 진루하고 1루는 비워진다.
base[k] = false;
base[k + 2] = true;
}
}
base[2] = true; // 타자는 2루로 진루.
}
// 78~90의 숫자가 나오면 3루타 / 13% 확률
if (percent >= 78 && percent <= 90) {
System.out.println("타자 쳤습니다!!!");
System.out.println("★★★타격결과 : 3루타★★★");
System.out.println("구속 : " + speed + "km");
System.out.println("======================");
System.out.println();
/*
3루타일때 : for문으로 3번 반복 하는데 k는 3이고 3, 2, 1 역순으로 배열을 확인해준다.
k == 3, 2, 1 : base의 k번방(3루, 2루, 1루)이 true이면 주자는 홈인
aScore++ 후 k번방(3루, 2루, 1루)은 false처리
타자주자 : 타자는 3루로 진루(3번방에 true)
*/
for (int k = 3; k >= 1; k--) {
if (base[k]) { // k루의 선수는 홈인.
hScore++; // 동시에 점수 획득.
base[k] = false; // k루의 베이스는 비워진다
}
}
base[3] = true; // 타자는 3루로 진루.
}
// 91~100의 숫자가 나오면 홈런 / 10% 확률
if (percent >= 91 && percent <= 100) {
// 홈런쳤을때 공이 날아가는 시간을 Thread.sleep으로 효과를 표현
try {
System.out.println("타자 쳤습니다!!!");
System.out.println("쭉쭉 뻗어나가는 공");
System.out.println("담장뒤로~~ 담장뒤로~~~");
Thread.sleep(2300);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("!!☆☆☆홈런☆☆☆!!");
System.out.println("구속 : " + speed + "km");
System.out.println("======================");
System.out.println();
/*
홈런일때 : for문으로 3번 반복 하는데 k는 1이고 1, 2, 3 순으로 배열을 확인해준다.
k == 1, 2, 3 : base의 k번방(1루, 2루, 3루)이 true이면 주자는 홈인
aScore++ 후 k번방(1루, 2루, 3루)은 false처리
타자주자 : aScore++ 홈인
*/
for (int k = 1; k <= 3; k++) {
if (base[k]) { // 모든 주자가 홈인.
hScore++; // 주자 1명 당 점수 1점씩 획득
base[k] = false;
}
}
hScore++; // 홈런친 타자의 점수 1점 추가.
}
}
// 타격하기가 아닌 다른걸 눌렀을때
else {
System.out.println("잘못눌렀습니다");
System.out.println("다시 입력하세요");
System.out.println();
continue;
}
} // while문 끝
}
}
package baseballgame;
import java.util.Random;
import java.util.Scanner;
public class AwayTeam {
static String aTeam; // 어웨이팀 이름을 입력받아 저장할 static변수
static int aScore; // 어웨이팀 점수를 저장할 static변수
public void a_hit() {
Random r = new Random(); // 랜덤클래스를 이용해 변수 r 생성
Scanner sc = new Scanner(System.in);
int percent = 0; // 타격했을때 결과값의 확률을 부여할 변수
int speed = 0; // 구속을 담을 변수
int outCnt = 0; // 아웃카운트를 담을 변수
boolean[] base; // boolean타입 base라는 배열선언 해서
base = new boolean[4]; // 홈(0번방), 1(1번방), 2(2번방), 3(3번방), 루의 값을 넣어준다
// outCnt가 2이하일때까지 공격을 반복한다
while (outCnt <= 2) {
System.out.println("◆◆◆ " + aTeam + " 공격 ◆◆◆");
// 타격전 주자가 몇루에 있는지를 출력할 문장
/*
만루일때 : base배열의 1, 2, 3번방이 전부 true면 주자 만루 출력
만루가 아닐때 : base i번방이 true이면 주자 i루 출력
*/
for (int i = 1; i <= 3; i++) {
if (base[1] && base[2] && base[3]) {
System.out.println("주자 만루 풀베이스");
} else if(base[i]){
System.out.println("주자 : " + i + "루");
}
}
// 게임중 플레이화면
System.out.println("아웃카운트 : " + outCnt + "아웃");
System.out.println("1. 타격하기");
System.out.println(HomeTeam.hTeam + " : " + HomeTeam.hScore);
System.out.println(AwayTeam.aTeam + " : " + AwayTeam.aScore);
System.out.print("입력 >> ");
int hit = sc.nextInt();
System.out.println(); // 한줄 띄어쓰기
// hit가 1이면 if문 실행
if (hit == 1) {
// 투수가 공을 던져서 타자한테 가기까지의 시간을 표현한 Thread.sleep문
System.out.println("투수 와인드업!!");
System.out.println();
try {
Thread.sleep(1700);
} catch (InterruptedException e) {
e.printStackTrace();
}
percent = r.nextInt(100) + 1; // 타격했을때 나올 확률을 Random클래스로 구할 변수
speed = r.nextInt(10) + 150; // 구속을 Random클래스로 구할 변수
// 1~40의 숫자가 나오면 아웃 / 40% 확률
if (percent >= 1 && percent <= 40) {
outCnt++; // 아웃이면 outCnt가 1씩 증가
System.out.println("타자 쳤습니다!!!");
System.out.println("타격결과 : 타자 아웃!!");
System.out.println("구속 : " + speed + "km");
System.out.println("======================");
System.out.println();
}
// 41~60의 숫자가 나오면 안타 / 20% 확률
if (percent >= 41 && percent <= 60) {
System.out.println("타자 쳤습니다!!!");
System.out.println("★타격결과 : 안타★");
System.out.println("구속 : " + speed + "km");
System.out.println("======================");
System.out.println();
/*
안타일때 : for문으로 3번 반복 하는데 k는 3이고 3, 2, 1 역순으로 배열을 확인해준다.
k == 3 : base의 k번방(3루)이 true이면 주자는 홈인
aScore++ 후 k번방(3루)은 false처리
k == 2, 1 : base의 k번방(2루, 1루)이 true일 때는 false처리 후
k번방(2루, 1루)에 1을 더해서 true를 준다.
타자주자 : 타자는 1루로 진루(1번방에 true)
*/
for (int k = 3; k >= 1; k--) {
if (base[k]) {
if (k == 3) { // 3루에 있는 선수는 홈인.
aScore++; // 동시에 점수 획득.
base[k] = false; // 3루는 비워진다.
continue;
}
// 1, 2루인 경우 1루씩 진루하고 원래 있던 자리는 비워진다.
base[k] = false;
base[k + 1] = true;
}
}
base[1] = true; // 타자는 1루로 진루.
}
// 61~77의 숫자가 나오면 2루타 / 17% 확률
if (percent >= 61 && percent <= 77) {
System.out.println("타자 쳤습니다!!!");
System.out.println("★★타격결과 : 2루타★★");
System.out.println("구속 : " + speed + "km");
System.out.println("======================");
System.out.println();
/*
2루타일때 : for문으로 3번 반복 하는데 k는 3이고 3, 2, 1 역순으로 배열을 확인해준다.
k == 3, 2 : base의 k번방(3루, 2루)이 true이면 주자는 홈인
aScore++ 후 k번방(3루, 2루)은 false처리
k == 1 : base의 k번방(1루)이 true일 때는 false처리 후
k번방(1루)에 2를 더해서 true를 준다.
타자주자 : 타자는 2루로 진루(2번방에 true)
*/
for (int k = 3; k >= 1; k--) {
if (base[k]) {
if (k == 3 || k == 2) { // 3루 혹은 2루에 있는 선수는 홈인.
aScore++; // 동시에 점수 획득.
base[k] = false; // 2루 또는 3루는 비워진다.
continue;
}
// 1루인 경우 3루로 진루하고 1루는 비워진다.
base[k] = false;
base[k + 2] = true;
}
}
base[2] = true; // 타자는 2루로 진루.
}
// 78~90의 숫자가 나오면 3루타 / 13% 확률
if (percent >= 78 && percent <= 90) {
System.out.println("타자 쳤습니다!!!");
System.out.println("★★★타격결과 : 3루타★★★");
System.out.println("구속 : " + speed + "km");
System.out.println("======================");
System.out.println();
/*
3루타일때 : for문으로 3번 반복 하는데 k는 3이고 3, 2, 1 역순으로 배열을 확인해준다.
k == 3, 2, 1 : base의 k번방(3루, 2루, 1루)이 true이면 주자는 홈인
aScore++ 후 k번방(3루, 2루, 1루)은 false처리
타자주자 : 타자는 3루로 진루(3번방에 true)
*/
for (int k = 3; k >= 1; k--) {
if (base[k]) { // k루의 선수는 홈인.
aScore++; // 동시에 점수 획득.
base[k] = false; // k루의 베이스는 비워진다
}
}
base[3] = true; // 타자는 3루로 진루.
}
// 91~100의 숫자가 나오면 홈런 / 10% 확률
if (percent >= 91 && percent <= 100) {
// 홈런쳤을때 공이 날아가는 시간을 Thread.sleep으로 효과를 표현
try {
System.out.println("타자 쳤습니다!!!");
System.out.println("쭉쭉 뻗어나가는 공");
System.out.println("담장뒤로~~ 담장뒤로~~~");
Thread.sleep(2300);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("!!☆☆☆홈런☆☆☆!!");
System.out.println("구속 : " + speed + "km");
System.out.println("======================");
System.out.println();
/*
홈런일때 : for문으로 3번 반복 하는데 k는 1이고 1, 2, 3 순으로 배열을 확인해준다.
k == 1, 2, 3 : base의 k번방(1루, 2루, 3루)이 true이면 주자는 홈인
aScore++ 후 k번방(1루, 2루, 3루)은 false처리
타자주자 : aScore++ 홈인
*/
for (int k = 1; k <= 3; k++) {
if (base[k]) { // 모든 주자가 홈인.
aScore++; // 주자 1명 당 점수 1점씩 획득
base[k] = false;
}
}
aScore++; // 홈런친 타자의 점수 1점 추가.
}
}
// 타격하기가 아닌 다른걸 눌렀을때
else {
System.out.println("잘못눌렀습니다");
System.out.println("다시 입력하세요");
System.out.println();
continue;
}
} // while문 끝
}
}
1. 게임시작
2. 홈팀과 어웨이 팀의 이름을 각각 입력받아 변수에 저장
3. 이닝 수 입력 -> 입력한 이닝 수 만큼 경기를 진행
4. AwayTeam클래스의 공격 메서드 호출
- AwayTeam클래스의
outCnt변수가 3이 될때까지 공격메서드를 실행
outCnt변수가 3이되면 break로 공격메서드 탈출Game클래스로 넘어와서
5. HomeTeam클래스의 공격 메서드 호출
- HomeTeam클래스의
outCnt변수가 3이 될때까지 공격메서드를 실행
outCnt변수가 3이되면 break로 공격메서드 탈출
6. 위 4, 5번을 n이닝만큼 반복
7. n이닝이 종료되면 게임결과 메서드 출력 후 게임 종료
주요코드는 위 전체코드에서 해당 내용들만 잘라서 한번에 보이게 해놓은거다.
Random r = new Random(); // 랜덤클래스를 이용해 변수 r 생성
percent = r.nextInt(100) + 1; // 1~100까지의 랜덤 수를 percent 변수에 저장
speed = r.nextInt(10) + 150; // 150~160 사이의 랜덤수를 speed 변수에 저장
// 1~40의 숫자가 나오면 아웃 / 40% 확률
if (percent >= 1 && percent <= 40)
System.out.println("구속 : " + speed + "km"); // 타격마다 스피드를 출력
// 41~60의 숫자가 나오면 안타 / 20% 확률
if (percent >= 41 && percent <= 60)
System.out.println("구속 : " + speed + "km"); // 타격마다 스피드를 출력
// 61~77의 숫자가 나오면 2루타 / 17% 확률
if (percent >= 61 && percent <= 77)
System.out.println("구속 : " + speed + "km");
// 78~90의 숫자가 나오면 3루타 / 13% 확률
if (percent >= 78 && percent <= 90)
System.out.println("구속 : " + speed + "km");
// 91~100의 숫자가 나오면 홈런 / 10% 확률
if (percent >= 91 && percent <= 100)
System.out.println("구속 : " + speed + "km");
- 랜덤클래스를 이용해 1~100까지의 랜덤 수를 생성해 각각 티격확률을 부여
- 150~160의 랜덤 수를 생성해 스피드를 부여했다.
- 내가 홈팀과 어웨이팀을 class 하나로만들어 상속받아 사용하지 않은 이유는 게임의 재미를 이용해 팀별로 타격확률을 다르게 바꿀수있게 만들고 싶어서였다.
boolean[] base; // boolean타입 base라는 배열선언 해서
base = new boolean[4]; // 홈(0번방), 1(1번방), 2(2번방), 3(3번방), 루의 값을 넣어준다
// 타격전 주자가 몇루에 있는지를 출력할 for문
/*
만루일때 : base배열의 1, 2, 3번방이 전부 true면 주자 만루 출력
만루가 아닐때 : base i번방이 true이면 주자 i루 출력
*/
for (int i = 1; i <= 3; i++) {
if (base[1] && base[2] && base[3]) { // base배열의 1,2,3번방이 다 true면 주자만루
System.out.println("주자 만루 풀베이스");
} else if (base[i]) { // base배열의 i번쨰 방이 true면 주자 i루
System.out.println("주자 : " + i + "루");
}
}
/*
안타일때 : for문으로 3번 반복 하는데 k는 3이고 3, 2, 1 역순으로 배열을 확인해준다.
k == 3 : base의 k번방(3루)이 true이면 주자는 홈인
aScore++ 후 k번방(3루)은 false처리
k == 2, 1 : base의 k번방(2루, 1루)이 true일 때는 false처리 후
k번방(2루, 1루)에 1을 더해서 true를 준다.
타자주자 : 타자는 1루로 진루(1번방에 true)
*/
for (int k = 3; k >= 1; k--) {
if (base[k]) {
if (k == 3) { // 3루에 있는 선수는 홈인.
aScore++; // 동시에 점수 획득.
base[k] = false; // 3루는 비워진다.
continue;
}
// 1, 2루인 경우 1루씩 진루하고 원래 있던 자리는 비워진다.
base[k] = false;
base[k + 1] = true;
}
}
base[1] = true; // 타자는 1루로 진루.
/*
2루타일때 : for문으로 3번 반복 하는데 k는 3이고 3, 2, 1 역순으로 배열을 확인해준다.
k == 3, 2 : base의 k번방(3루, 2루)이 true이면 주자는 홈인
aScore++ 후 k번방(3루, 2루)은 false처리
k == 1 : base의 k번방(1루)이 true일 때는 false처리 후
k번방(1루)에 2를 더해서 true를 준다.
타자주자 : 타자는 2루로 진루(2번방에 true)
*/
for (int k = 3; k >= 1; k--) {
if (base[k]) {
if (k == 3 || k == 2) { // 3루 혹은 2루에 있는 선수는 홈인.
aScore++; // 동시에 점수 획득.
base[k] = false; // 2루 또는 3루는 비워진다.
continue;
}
// 1루인 경우 3루로 진루하고 1루는 비워진다.
base[k] = false;
base[k + 2] = true;
}
}
base[2] = true; // 타자는 2루로 진루.
/*
3루타일때 : for문으로 3번 반복 하는데 k는 3이고 3, 2, 1 역순으로 배열을 확인해준다.
k == 3, 2, 1 : base의 k번방(3루, 2루, 1루)이 true이면 주자는 홈인
aScore++ 후 k번방(3루, 2루, 1루)은 false처리
타자주자 : 타자는 3루로 진루(3번방에 true)
*/
for (int k = 3; k >= 1; k--) {
if (base[k]) { // k루의 선수는 홈인.
aScore++; // 동시에 점수 획득.
base[k] = false; // k루의 베이스는 비워진다
}
}
base[3] = true; // 타자는 3루로 진루.
/*
홈런일때 : for문으로 3번 반복 하는데 k는 1이고 1, 2, 3 순으로 배열을 확인해준다.
k == 1, 2, 3 : base의 k번방(1루, 2루, 3루)이 true이면 주자는 홈인
aScore++ 후 k번방(1루, 2루, 3루)은 false처리
타자주자 : aScore++ 홈인
*/
for (int k = 1; k <= 3; k++) {
if (base[k]) { // 모든 주자가 홈인.
aScore++; // 주자 1명 당 점수 1점씩 획득
base[k] = false;
}
}
aScore++; // 홈런친 타자의 점수 1점 추가.
완성도는 그렇게 높지 않은거 같지만
내가 좋아하는 주제로 토이 프로젝트를 만들어보니까 시간 가는줄 모르고 만들었고 앞으로 다른 주제로도 많이 만들어봐야겠다. ㅎㅎ