package edu.exam06.homework;

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

/*1. 삼진아웃게임을 만듭니다
두 사람중에 한 사람이 0~9까지 3개의 숫자중 중복없이 임의의 숫자를 선택합니다
예를 들어 3 1 9를 선택했다면
다른 한사람이 3개의 숫자를 맞추고 결과를 응답받습니다
같은 숫자 동일한 자리일 경우 1스트라이크
같은 숫자 다른 자리일 경우 1볼입니다
세자리 숫자 모두 자리까지 일치할 경우는 삼진아웃!!으로 처리합니다

클래스를 구현하세요
GeneratorThreeNum // 난수 3개를 생성하는 역할
BaseBallMenu      // 메뉴를 담당하는 역할
DecisionBall      // 스트라이크, 볼을 판단하는 역할
BaseBallMain	  // main메서드를 실행하는 역할


예를 들어 진행은 다음과 같습니다

첫번째 숫자 입력 >> 3
두번째 숫자 입력 >> 0
세번째 숫자 입력 >> 8
==> 1스트라이크 0볼


첫번째 숫자 입력 >> 1
두번째 숫자 입력 >> 0
세번째 숫자 입력 >> 9
==> 1스트라이크 1볼


첫번째 숫자 입력 >> 3
두번째 숫자 입력 >> 0
세번째 숫자 입력 >> 9
==> 2스트라이크 0볼


첫번째 숫자 입력 >> 3
두번째 숫자 입력 >> 1
세번째 숫자 입력 >> 9
==> 3스트라이크 0볼
==> 삼진아웃!!

다시하시겠습니까(Y/N)?
*/

class GeneratorThreeNum {	// 난수 3개를 생성하는 역할
	// static Random rd = new Random();
	BaseBallMain main = new BaseBallMain();

	static int randomArr[] = new int[3];
	void randomNum() {
		
		for (int i = 0; i < randomArr.length; i++) {
			randomArr[i] = main.rd.nextInt(10);
			System.out.println(randomArr[i]+" ");
		}
	}
} 

class BaseBallMenu {// 메뉴를 담당하는 역할
	BaseBallMain main = new BaseBallMain();
	//GeneratorThreeNum ge = new GeneratorThreeNum();
	//DecisionBall re = new DecisionBall();
	
	static int inputArr[] = new int[3];
	void printView() {
		
		System.out.println("첫번째 숫자 입력 >>");
		inputArr[0] = main.sc.nextInt();
		System.out.println("두번째 숫자 입력 >>");
		inputArr[1] = main.sc.nextInt();
		System.out.println("세번째 숫자 입력 >>");
		inputArr[2] = main.sc.nextInt();		
	}		
}
class DecisionBall {// 스트라이크, 볼을 판단하는 역할
	
	GeneratorThreeNum ge = new GeneratorThreeNum();
	BaseBallMenu base = new BaseBallMenu();
	int strike=0;
	int ball = 0;
	void calc() {	
		for(int i=0;i<ge.randomArr.length;i++) {
			for(int j=0;j<ge.randomArr.length;j++) {				
				if(ge.randomArr[i]==base.inputArr[j]) {
					if(i==j) {		//같은 인덱스일때 스트라이크
						strike++;
					}
					else {			//다른 인덱스끼리 같을때 볼
						ball++;
					}
				}			
			}
		}		
	System.out.println("==> "+strike+"스트라이크 "+ball+"볼");
	if(strike==3) {
		System.out.println("==> 삼진아웃!!");
	}
	}
}
//class BaseBallMain{}	  // main메서드를 실행하는 역할
public class BaseBallMain {
	static Random rd = new Random();
	static Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		
		GeneratorThreeNum ge = new GeneratorThreeNum();	//난수
		BaseBallMenu base = new BaseBallMenu();	//정수입력 뷰
		DecisionBall de = new DecisionBall();
		
		boolean flag =true;
		while(flag) {
						
			ge.randomNum();
			base.printView();
			de.calc();
			System.out.println("다시하시겠습니까(Y/N)?");
			String sel = sc.next();
			if(sel.equals("N")) {
				flag=false;
			}			
		}		
	}
}

'etc.. > 1' 카테고리의 다른 글

200128 advance  (0) 2020.01.28
200116_프린트 상속 예제  (0) 2020.01.16
생성자 클래스 예제  (0) 2020.01.15
static 메소드 예제 2 - 미완성  (0) 2020.01.15
static 메소드 예제  (0) 2020.01.15

+ Recent posts