[KOSTA] Spring 기반 Cloud 9일차 - OOP 실습 (숫자 야구 게임)

JUNBEOM PARK·2022년 2월 10일
0
post-thumbnail

🎲 숫자 야구 게임

내용: 임의의수 3자리의 숫자를 맞추는 게임
123
134
1S1B
-> 같은자리의 숫자 일치 => 스트라이크 S
-> 서로다른자리 숫자 일치 => 볼 B
게임의 종료 -> 3Strike


1. 중복되지 않는 1-9 난수 3개를 구한다. => 배열
2. 키보드로 부터 3개의 숫자를 입력 받는다. => 배열
3. 스트라이크, 볼의 갯수를 체크
4. 결과 출력
5. 8번째 성공

📃 풀이

BaseBall.java

package kosta.game;

import java.util.Arrays;

public class BaseBall {
	//난수를 추출, 스트라이크/볼 체크
	int hidden[];
	
	public BaseBall() {
		hidden = new int[3];
		hidden[0] = (int)(Math.random() * 9) + 1; // 1~9
		do {
			hidden[1] = (int)(Math.random() * 9) + 1;
		}while(hidden[0] == hidden[1]);
		
		do {
			hidden[2] = (int)(Math.random() * 9) + 1;
		}while(hidden[0] == hidden[2] || hidden[1] == hidden[2]);
		
		System.out.println("난수 :" + Arrays.toString(hidden));
	}
	
	//스트라이크 체크
	public int countStrike(int input[]) {
		int strike = 0;
		
		for(int i = 0; i < 3; i++) {
			if(hidden[i] == input[i]) {
				strike++;
			}
		}
		return strike;
	}
	//볼 체크
	public int countBall(int input[]) {
		int ball = 0;
		
		for(int i = 0; i < 3; i++) {
			if(hidden[i] == input[(i+1)%3]) {
				ball++;
			}else if(hidden[i] == input[(i+2)%3]) {
				ball++;
			}
		}
		return ball;
	}
}

Main.java

package kosta.game;

import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
		int strike = 0;
		int ball = 0;
		int count = 0;
		int input[] = new int[3];
		
		BaseBall bb = new BaseBall();
		Scanner sc = new Scanner(System.in);
		
		do {
			System.out.println("게임 도전");
			System.out.print("숫자 입력 :");
			
			for(int i = 0; i < 3; i++) {
				input[i] = sc.nextInt();
			}
			
			strike = bb.countStrike(input);
			ball = bb.countBall(input);
			
			System.out.println(strike+"S"+ball+"B");
			count++;
			
//			System.out.println("입력 :"+Arrays.toString(input));
		} while(strike != 3);
		
		System.out.println(count + "번째 성공");
	}
}
profile
DB 엔지니어👍

0개의 댓글