[java] Strike, Ball 판단하기

Jong·2021년 8월 30일
0

java

목록 보기
1/2
post-thumbnail

게임이 시작되면 랜덤으로 4자리의 숫자가 선정된다 1. 플레이어는 8번의 시도를 할 수 있다 2. 각 시도마다 4자리의 숫자를 입력하면 다음과 같이 알려준다.
숫자와 위치가 다 맞을경우 - Strike
숫자만 맞을경우 - Ball
ex: 랜덤으로 뽑힌 정답값이 3456일때, (정답값은 같은 숫자가 안들어가게 선택되어야 한다.)

5634 4 Ball
3789 1 Strike
3654 1 Strike 3 Ball

package realtest;

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

public class StrikeSol {

	static int check[];
	static int myCheck[];
	static String myNum;
	static Scanner sc = new Scanner(System.in);
	
	public StrikeSol() {
		check = new int[10];
		myCheck = new int[10];
	}//생성자

	public static void main(String[] args) {
		
		StrikeSol me = new StrikeSol();
		char[] computerVal = me.selectNum();
	
		for (int i = 1; i <= 8; i++) {
			
			int stknum = 0;
			int ballnum = 0;
			System.out.println("======= "+ i + "번째 시도 =======");
			

			char[] charMyNum = me.myselectNum();
			
//			System.out.println("최종 내가 입력한 값 : " + new String(charMyNum));
			
			for (int j = 0; j < 4; j++) {
				if(computerVal[j] == charMyNum[j]) {
					stknum += 1;
				}
				else {
					if(check[charMyNum[j]-'0'] > 0) {
						ballnum += 1;
//						check[charMyNum[j]-'0'] -= 1;
					}
				}
			}//for
			
			System.out.print(myNum +" ");
			if(stknum > 0) {
				System.out.print(stknum+ " Strike ");
			}
			if(ballnum > 0) {
				System.out.print(ballnum+ " Ball");
			}
			System.out.println();
			
			Arrays.fill(myCheck, 0);
			
		}//for
		
		
	}//main
	
	static char[] selectNum() {
		
		System.out.print("랜덤숫자 4개를 지정했습니다.");
		int sum = 0;
		int mul = 1;
		for (int i = 0; i < 4; i++) {
			int rannum = (int)(Math.random()*10);
			if( i == 3 && rannum ==0) {
				while (rannum == 0) {
					rannum = (int)(Math.random()*10);
				}
			}
			while (check[rannum] != 0) {
				rannum = (int)(Math.random()*10);
			}
			if (check[rannum] == 0) {
				check[rannum] += 1;
			}
			sum += (mul*rannum);
			mul *= 10;
		}//for
		
		String selectedNum = Integer.toString(sum);
		char[] charSelectedNum = selectedNum.toCharArray();
		
		System.out.println("지정된 값: "+ selectedNum);
		return charSelectedNum;
	}
	
	static char[] myselectNum() {
		
		myNum = sc.next();
//		System.out.println("입력한 값 : "+myNum);
		char[] charMyNum = myNum.toCharArray();
		for (int j = 0; j < 4; j++) {
			if (myCheck[charMyNum[j]-'0'] == 0) {
				myCheck[charMyNum[j]-'0'] += 1;
			}else {
				System.out.println(new String(charMyNum) +" : 중복된 값이 존재합니다.");
				Arrays.fill(myCheck, 0);//				System.out.println(myCheck[0]+", " + myCheck[1] + ", " + myCheck[2] + ", " + myCheck[3]+", " + myCheck[4]+", " + myCheck[5]+", " + myCheck[6]+", " + myCheck[7]+", " + myCheck[8]+", " + myCheck[9]);
				 charMyNum = myselectNum();
				 break;
			}
		}
		return charMyNum;
	}
	
}

profile
새싹 개발자 수련중(블로그 이전)

0개의 댓글