게임이 시작되면 랜덤으로 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;
}
}