잡담 : 몇년전 웹 디자이너로써 활동하던 시절이 있었습니다. 그 당시 게임을 운영하는 분이 짜달라고 했던 숫자 야구게임이라는 게 있었습니다. 기본적인 제어문도 제대로 다룰줄 몰랐던 저는 할 줄 모른다고 말씀 드리고 프로그래밍에 대한 열망이 쌓이게 된 계기이기도 하였습니다. 그 게임 운영자가 얼마전에 연락이 되어서 그때의 숫자 야구 게임에 대해서 생각이 나더군요. 그래서 한번 소스를 짜봤습니다.



최대한 API의 이용을 줄였으며, 이해하기 쉽게 소스를 짜도록 하였다.

 
import java.util.*;

public class BaseballServer {

 static int strike = 0; // 정답 변수 선언
 static int ball = 0; // 정답 변수 선언

 public static void main(String[] args) {
  int a[] = new int[3]; // 컴퓨터가 랜덤으로 값을 저장할 배열 선언
  int b[] = new int[3]; // 유저에게 입력받는 값을 저장할 배열 선언
 
  Random ra = new Random(); 
  while(a[0] == 0) { a[0] = ra.nextInt(10); }
  while(a[0] == a[1] || a[1] == 0) { a[1] = ra.nextInt(10); }
  while(a[0] == a[2] || a[1] == a[2] || a[2] == 0) { a[2] = ra.nextInt(10); }
  // 1~9까지의 랜덤 값을 a배열에 대입
  
  // System.out.println(a[0] + ", " + a[1] + ", " + a[2] + "\n");
  // 컴퓨터가 정한 값 출력
 
  Scanner s = new Scanner(System.in);
 
  while(strike < 3) { // 정답을 맞출때까지 계속 반복
 
   for(int i = 0; i < b.length; i++) { // 반복적으로 유저에게 값 입력 받기
    System.out.print(i+1 + "번째 수(1~9) : ");
    b[i] = s.nextInt();
    while (b[i] >= 10 || b[i] == 0) { // 입력된 값의 오류 체크
     System.out.println("[오류] 1~9 사이의 한자리수 입력!");
     System.out.print(i+1 + "번째 수(1~9) : ");
     b[i] = s.nextInt();
    }
    // System.out.println("입력한 수는 " + b[i] + "입니다.");
   }
  
   for(int i = 0; i < 3; i++) { // strike, ball 여부 체크
    for(int j = 0; j < 3; j++) {
     if( a[i] == b[j] ) {
      if ( i == j ) { strike += 1; } else { ball +=1; } // strike, ball 값 갱신
     }
    }
   }
  
   if (strike == 0 && ball == 0) { // 모두 틀릴 경우
    System.out.println("\n아웃!\n");
   } else if(strike == 3) { // 정답일 경우
    System.out.print("\n정답입니다!");
    System.exit(0);
   } else { // 부분 정답일 경우
    System.out.println("\n" + strike + " Strike" + ", " + ball + " Ball\n");
    strike = 0;
    ball = 0;
   }
  }
 }
}


실행 결과



Posted by 리트모스
: