주의;
게임 클리어or 게임오버 2가지 결과기 때문에 boolean으로 clear할경우를 셋팅.
가상배열 swit[] 를 10자리 만들고
모두 false로 잡아 놓은 후 랜덤숫자 인덱스번호에 대입하여 겹치지 않아 false가 또 나올경우 해당위치는 true로 초기화한다.
while문을 사용하여 마지막에 인덱스넘버 w++; 해준다
boolean swit[] = new boolean[10]; //숫자0~9 //스위치 on/off로 나누어 중복계산
for (int i = 0; i < swit.length; i++) {
swit[i] = false; // 00000 00000
}
clear = false;
int r, w; //r은 랜덤넘버 //w는 인덱스넘버
w = 0;
while(w < 3) {
r = (int)(Math.random() * 10); // 0 ~ 9
if(swit[r] == false) {
swit[r] = true; // 00100 00000
r_num[w] = r + 1; // 1 ~ 10
w++;
/*
Baseball
random number -> 3개 r1 != r2 != r3
user number -> 3개
비교
메시지 출력 ?Strike ?Ball
play again
*/
Scanner sc = new Scanner(System.in);
int r_num[] = new int[3];
int u_num[] = new int[3]; // 10개 (1 ~ 10) - 00000 00000 -> 01000 00000
boolean clear; // 마지막줄에 if clear이면 게임 끝 아니면 재도전
boolean swit[] = new boolean[10]; //숫자0~9 //스위치 on/off로 나누어 중복계산
for (int i = 0; i < swit.length; i++) {
swit[i] = false; // 00000 00000
}
clear = false;
int r, w; //r은 랜덤넘버 //w는 인덱스넘버
w = 0;
while(w < 3) {
r = (int)(Math.random() * 10); // 0 ~ 9
if(swit[r] == false) {
swit[r] = true; // 00100 00000
r_num[w] = r + 1; // 1 ~ 10
w++;
}
}
for (int i = 0; i < r_num.length; i++) {
System.out.println(i + " : " + r_num[i]);
}
// Debug != 에러
// 실시간
// break pointer
/*
while(true) {
//r_num[0] = (int)(Math.random() * 10) + 1;
//r_num[1] = (int)(Math.random() * 10) + 1;
//r_num[2] = (int)(Math.random() * 10) + 1;
for (int i = 0; i < r_num.length; i++) {
r_num[i] = (int)(Math.random() * 10) + 1;
}
if(r_num[0] != r_num[1]
&& r_num[0] != r_num[2]
&& r_num[1] != r_num[2]) {
break;
}
}
*/
/////////////////// loop 10
w = 0;
int strike, ball;
while(w < 10) {
// user input u1 != u2 != u3
boolean check;
int w1;
while(true) {
check = false;
w1 = 0;
while(w1 < 3) {
System.out.print((w1 + 1) + "번째 수 = ");
u_num[w1] = sc.nextInt();
w1++;
}
// 같은 숫자가 있는지 첵크
out:for (int i = 0; i < u_num.length; i++) {
for (int j = 0; j < u_num.length; j++) {
if(u_num[i] == u_num[j] && i != j) {
check = true; // 입력한 같은 숫자가 있음
break out;
}
}
}
if(check == false) {
break;
}
System.out.println("입력한 숫자 중에 중복되는 숫자가 있습니다. 다시 입력해 주십시오");
}
// process(비교)
strike = ball = 0;
// ball
for (int i = 0; i < u_num.length; i++) {
for (int j = 0; j < r_num.length; j++) {
if(u_num[i] == r_num[j] && i != j) {
ball++;
}
}
}
// strike
for (int i = 0; i < u_num.length; i++) {
if(u_num[i] == r_num[i]) {
strike++;
}
}
// 탈출
if(strike > 2) {
clear = true;
break;
}
// 메시지 출력
System.out.println(strike + "스트라이크, " + ball + "볼 입니다");
w++;
}
if(clear) {
System.out.println("Game Clear!!");
}else {
System.out.println("Game Over~ ");
}
'JAVA > 기초 프로그래밍' 카테고리의 다른 글
Random 중복 거르기/ swit[r]사용 (0) | 2020.05.25 |
---|---|
유저로부터 입력 받은 수들의 합계와 평균을 구하는 프로그램을 작성하라 (0) | 2020.05.22 |
수수께기 프로그램 (0) | 2020.05.22 |
switch 사칙연산 (0) | 2020.05.21 |
무작위 별찍기 (0) | 2020.05.21 |