자바의 배열 및 random, System.in.read를 이용하여 야구 게임을 만들겠습니다.
제가 만들 야구 게임은 3자리 숫자를 입력하여 컴퓨터가 랜덤으로 생성한 숫자를 맞추는 게임으로,
수는 맞지만 자리가 다를 경우는 ball (=B), 자리와 수가 모두 같을 때는 strike (=S) 로 표시합니다.
또 모두 틀렸을 때는 out로 표시합니다.
만약, 컴퓨터가 만든 숫자가 345일 때 356을 입력한다면 1S 1B가 되겠지요!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | import java.io.*; public class TestRandom01 { public static void main(String[] args) throws IOException { char[] com = new char[3]; char[] select = new char[3]; int co = 0; for(int i=0; i<3; ++i) { com[i] = (char)(Math.random()*9 + 49); for(int j=0; j<i; ++j) { if (com[i] == com[j]) { i--; break; } } } while(true) { int s = 0, b = 0; for(int i=0; i<3; ++i) { select[i] = (char)System.in.read(); } System.in.skip(5); co++; for(int i=0; i<3; ++i) { for (int j=0; j<3; ++j) { if (com[i] == select[j]) { if (i==j) { s++; }else { b++; } } } } if (s==3) { break; }else if (s==0 && b==0) { System.out.println("out"); }else { System.out.printf("%dS %dB\n", s, b); } } System.out.println(co+"번만에 맞추셨습니다."); } } | cs |
이하 설명입니다.
char[] com = new char[3];
char[] select = new char[3];
입력한 숫자를 하나씩 나누기 위해 char로 배열을 생성합니다.
com은 컴퓨터에서 생성하는 숫자이며, select는 사용자가 입력하는 숫자입니다.
for(int i=0; i<3; ++i) {
com[i] = (char)(Math.random()*9 + 49);
for(int j=0; j<i; ++j) {
if (com[i] == com[j]) {
i--;
break;
}
}
}
컴퓨터에서 생성하는 숫자를 랜덤값으로 정합니다.
1~9의 숫자 3개를 랜덤값으로 뽑고 중복값을 제거합니다.
while(true) {
int s = 0, b = 0;
for(int i=0; i<3; ++i) {
select[i] = (char)System.in.read();
}
System.in.skip(5);
co++;
이제 사용자의 숫자를 입력받습니다.
System.in.read()를 이용하여 입력받은 값을 select[i]에 넣습니다.
엔터를 제거하기 위해 System.in.skip(5); 을 넣습니다.
횟수를 세기 위한 co변수를 추가하고 while문이 돌아갈 때마다 횟수를 늘려줍니다.
for(int i=0; i<3; ++i) {
for (int j=0; j<3; ++j) {
if (com[i] == select[j]) {
if (i==j) {
s++;
}else {
b++;
}
}
}
}
컴퓨터의 숫자와 사용자의 숫자를 비교하는 코드를 작성합니다.
자릿수와 숫자가 모두 같다면 s를, 숫자만 같다면 b를 증가시킵니다.
if (s==3) {
break;
}else if (s==0 && b==0) {
System.out.println("out");
}else {
System.out.printf("%dS %dB\n", s, b);
}
}
System.out.println(co+"번만에 맞추셨습니다.");
}
}
결과를 출력할 코드를 작성합니다.
s가 3이면 (횟수)번만에 맞추셨습니다. 로 출력합니다.
모두 틀렸을 경우에는 out
그 외에는 printf로 처리합니다.
잘 출력되었습니다.
'Study > Java' 카테고리의 다른 글
자바 재귀함수를 이용하여 피보나치 수열 구하기 (0) | 2022.03.21 |
---|---|
자바 재귀함수를 이용하여 팩토리얼 구하기 (0) | 2022.03.21 |
자바 Math.random() 사용하여 로또 번호를 입력 받아 맞춘 개수 출력 (0) | 2022.03.17 |
자바 이름과 점수를 입력 받아 순위 출력 (0) | 2022.03.16 |
자바 임의의 숫자 10개를 입력받아 입력한 숫자/합계/평균 출력 (0) | 2022.03.16 |