Java 연습문제 #3 - 숫자 야구 게임 만들기 (국비14일차)

 

우리가 흔히 아는 숫자 야구 게임을 자바로 구현해 본 것이다.

생각보다 난도가 그렇게 높지 않아서 바로 만들 수 있었다.

 

주의해야 할 점은

100의자리 수와 10의 자리 수, 1의 자리 수가 중복되지 않게 만들어져야 하며

ball과 strike가 매 입력마다 새롭게 0으로 초기화돼서 비교돼야 한다는 점이다.

그리고 정답일 때와 9번의 시도 끝에 실패했을 경우 무슨 말을 넣을지도 고민해봐야 한다.!!

etc-image-0
etc-image-1

import java.util.Random;

import java.util.Scanner;

public class NumberBaseball {

public static void main(String[] args) {

 

// 3자리 정수 100의자리, 10의자리, 1의자리 별로 선언 (중복x)

Random rnd =new Random();

int com100, com10, com1;

 

do {

com100 = rnd.nextInt(10);

com10 = rnd.nextInt(10);

com1 = rnd.nextInt(10);

 

}

while( com100 == com10 || com100 == com1 || com10 == com1);

 

 

 

// 3자리 수 입력 받기

Scanner scan = new Scanner(System.in);

int userNumber, num100, num10, num1;

 

for(int i =0; i<9;i++) {

System.out.println("["+(i+1)+"회]");

System.out.print("중복되지 않는 3자리 숫자 입력 : ");

userNumber = scan.nextInt();

num100 = userNumber / 100;

num10 = userNumber /10 % 10;

num1 = userNumber % 10;

 

// ball, strike 구별

int ball =0, strike = 0;

 

//100의 자리

if (num100 == com100) strike++;

else if (num100 == com10) ball++;

else if(num100 == com1) ball++;

 

//10의 자리

if (num10 == com100) ball++;

else if (num10 == com10) strike++;

else if(num10 == com1) ball++;

 

//1의 자리

if (num1 == com100) ball++;

else if (num1 == com10) ball++;

else if(num1 == com1) strike++;

 

//정답과 아닐 시 구분

if (strike ==3 ) {

System.out.println("정답입니다. 와~~!");

break;

}

else System.out.println(strike + "S " + ball + "B");

 

if (i==8 && strike != 3) System.out.println("You loser~~~");

}

}

}

 

 

etc-image-2