본문 바로가기

JAVA/수업 Test

숫자 야구 게임(내방법)

package kosta.Test;

public class Test02_야구게임2 {

	public static String[] randomNum(int n) {	
		String[] num_arr= {"0","1","2","3","4","5","6","7","8","9"};
		String temp;
		for (int i = 0; i < num_arr.length; i++) {
			int num=(int)(Math.random()*10);
			temp=num_arr[0];
			num_arr[0]=num_arr[num];
			num_arr[num]=temp;
		}
		if(num_arr[0].equals("0")) {
			temp=num_arr[0];
			num_arr[0]=num_arr[n];
			num_arr[n]=temp;
		}
		for (int i = 0; i < n; i++) {
			System.out.print(num_arr[i]);
		}
		System.out.println();
		String[] ran_arr=new String[n];
		System.arraycopy(num_arr, 0, ran_arr, 0, n);
		
		return ran_arr;
		
	}
	
	public static void strikeBall(int n,String[] ran_arr) {
		int strike_count;
		int ball_count;
		while(true) {
			System.out.print("숫자 입력:");
			String myNum=DataInput.inputVal();
			String[] myNum_arr=myNum.split("");
			if(myNum_arr.length!=n) {
				System.out.println("숫자를 다시 입력해주세요.");
				continue;
			}
			strike_count=0;
			ball_count=0;
	//		1.스트라이크 카운트 체크 후, 스트라이크 배열 없애주기
			for (int i = 0; i < myNum_arr.length; i++) {
				if(ran_arr[i].equals(myNum_arr[i])) {
					strike_count++;
					myNum_arr[i]=null;
					
				}
			}
			if(strike_count==n)break;
	//		2.볼카운트 체크
			for (int i1 = 0; i1 < myNum_arr.length; i1++) {
					if(myNum_arr[i1]==null)continue;
				for (int j = 0; j < myNum_arr.length; j++) {
					if(myNum_arr[j]==null)continue;
					if(ran_arr[i1].equals(myNum_arr[j])){
						ball_count++;
						}
				}
			}
			System.out.println("야구 게임 결과: "+strike_count+"strike and "+ball_count+"ball");
		}
		System.out.println("야구 게임 결과: "+strike_count+"strike");
	}
	
	
	public static void main(String[] args) {
		System.out.print("숫자 자릿수 입력:");
		int n=Integer.parseInt(DataInput.inputVal());
		String[] ran_arr=randomNum(n);
		strikeBall(n, ran_arr);
	}
}

package kosta.Test;

import java.util.Scanner;

public class Test02_야구게임 {

	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		String[] arr= {"1","2","3","4","5","6","7","8","9"};
		String temp;
		for (int i = 0; i < arr.length; i++) {
			int num=(int)(Math.random()*9);
			temp=arr[0];
			arr[0]=arr[num];
			arr[num]=temp;
		}
//		for (int i = 0; i < arr.length; i++) {
//			System.out.println(arr[i]);
//		}
		String[] random_arr=new String[3]; //임의의 숫자3개 배열 완성!!
		System.arraycopy(arr, 0, random_arr, 0, 3);
		for (int i = 0; i < random_arr.length; i++) {
			System.out.print(random_arr[i]);
		
		}
		System.out.println();
		
		while(true) {
			System.out.print("3자리 숫자 입력:");
			String num3=scan.nextLine();
			String[] num3_arr=num3.split(""); //3자리 숫자 배열에 넣기 완료
//			for (int i = 0; i < num3_arr.length; i++) {
//				System.out.println(num3_arr[i]);
//			}
			int strike_count=0;
			int ball_count=0;
			int index=-1;
			if(random_arr[0].equals(num3_arr[0])) {
				strike_count++;
				index=0;
			}
			if(random_arr[1].equals(num3_arr[1])) {
				strike_count++;
				index=1;
			}
			if(random_arr[2].equals(num3_arr[2])) {
				strike_count++;
				index=2;
			}
			
			if(strike_count==3) {
				System.out.println("숫자 "+num3_arr[0]+num3_arr[1]+num3_arr[2]+" 의 결과: "+strike_count+"Strike");
				break;
			}else if(strike_count==2) {
				System.out.println("숫자 "+num3_arr[0]+num3_arr[1]+num3_arr[2]+" 의 결과:"+strike_count+"Strike");
			}else	if(strike_count==1) {
				if(index==0) {
					if(random_arr[1].equals(num3_arr[2])) {
						ball_count++;
					}
					if(random_arr[2].equals(num3_arr[1])) {
						ball_count++;
					}
				}else if(index==1) {
					if(random_arr[0].equals(num3_arr[2])) {
						ball_count++;
					}
					if(random_arr[2].equals(num3_arr[0])) {
						ball_count++;
					}else {
						if(random_arr[0].equals(num3_arr[1])) {
							ball_count++;
						}
						if(random_arr[1].equals(num3_arr[0])) {
							ball_count++;
						}
					}
				}
				System.out.println("숫자 "+num3_arr[0]+num3_arr[1]+num3_arr[2]+" 의 결과:"+strike_count+"Strike "+ball_count+" Ball");
			}else {
				for (int i = 0; i < random_arr.length; i++) {
					for (int j = 0; j < num3_arr.length; j++) {
						if(i==j) {
							continue;
						}else {
							if(random_arr[i]==num3_arr[j]) ball_count++;
						}
						
					}
				}
				System.out.println("숫자 "+num3_arr[0]+num3_arr[1]+num3_arr[2]+" 의 결과:"+strike_count+"Strike "+ball_count+" Ball");
			}
		}
	}
}	

'JAVA > 수업 Test' 카테고리의 다른 글

랜덤 숫자 up down 게임  (0) 2021.02.01
갤러그_재귀함수 이용  (0) 2021.02.01
숫자 야구 게임(강사님방법)  (0) 2021.02.01