JAVA 프로그래밍

문제

상자 3개 중 하나에 임의로 공이나 폭탄을 숨기고 그 위치를 맞추는 문제입니다 이를 해결하는 다음 프로그램을 해석하세요 
 1, 2, 3 중에서 공을 숨긴 컵을 찾으세요:  3
  ___    ___    ___  
 |   |  |   |  |   | 
 | 1 |  | 2 |  | 3 | 
          O   
               놓쳤다!
 1, 2, 3 중에서 폭탄을 숨긴 상자를 찾으세요: 1
  ___    ___    ___  
 |   |  |   |  |   | 
 | 1 |  | 2 |  | 3 | 
   O   
  펑!! 

 1, 2, 3 중에서 공을 숨긴 컵을 찾으세요:  1
  ___    ___    ___  
 |   |  |   |  |   | 
 | 1 |  | 2 |  | 3 | 
          O   
 놓쳤다!
 1, 2, 3 중에서 폭탄을 숨긴 상자를 찾으세요: 3
  ___    ___    ___  
 |   |  |   |  |   | 
 | 1 |  | 2 |  | 3 | 
          O   
               휴우! 

 1, 2, 3 중에서 공을 숨긴 컵을 찾으세요:  2
  ___    ___    ___  
 |   |  |   |  |   | 
 | 1 |  | 2 |  | 3 | 
          O   
        찾았다! 
 1, 2, 3 중에서 폭탄을 숨긴 상자를 찾으세요: 2
  ___    ___    ___  
 |   |  |   |  |   | 
 | 1 |  | 2 |  | 3 | 
   O   
         휴우! 

알고리즘

 프로그램 시작 
   첫째 공 찾기 게임
      공 숨기기
      공 찾기
      공 찾기 결과 출력
   둘째 폭탄 피하기 게임
      폭탄 숨기기
      폭탄 피하기
      폭탄 피하기 결과 출력
프로그램 종료

공 찾기 클래스
   공 찾기 초기화
   공 숨기기
   공 찾기
   공 찾기 결과 출력

폭탄 피하기 클래스
   폭탄 피하기 초기화 : 공 찾기 대신 폭탄 피하기에 맞게 메시지 설정

프로그램 코드

	// 파일명 : ./Chapter12/FindGame.java
	import java.util.Scanner;
	import find.FindBall;
	import find.FindBomb;
 
	public class FindGame
	{
		// 프로그램 시작 
1		public static void main( String[] args ) {
			Scanner scan = new Scanner( System.in );
			// 첫째 공 찾기 게임 
2			FindBall game =
3			                new FindBall();
			// 공 숨기기 
4			game.hide();
			// 공 찾기 
5			game.find( scan );
			// 공 찾기 결과 출력  
6			System.out.println(
7			                    game );
 
			// 둘째 폭탄 피하기 게임 
8			game =
9			       new FindBomb();
			// 폭탄 숨기기 
10			game.hide();
			// 폭탄 피하기 
11			game.find( scan );
			// 폭탄 피하기 결과 출력  
12			System.out.println(
13			                    game );
	 
		// 프로그램 종료 
14		}
	}
 
	// 파일명 : ./src/find/FindBall.java
	package find;
	import java.util.Scanner;
	 
	// 공 찾기 클래스 
	public class FindBall
	{
		protected String message;
		protected String meet;
		protected String dodge;
		private int ball;
		private int cup;
	 
		// 공 찾기 초기화  
B1b		public FindBall() {
			this.message = "1, 2, 3 중에서 공을 숨긴 컵을 찾으세요: ";
			this.meet   = "찾았다!\n";
			this.dodge  = "놓쳤다!\n";
			this.ball = 1;
			this.cup = 0;
B1e		}
	 
		// 공 숨기기   
B2b		public void hide() {
			this.ball = (int)( Math.random() * 3 ) + 1;
B2e		}
	 
		// 공 찾기   
B3b		public void find( Scanner scan ) {
			System.out.print( message );
			this.cup = scan.nextInt();
B3e		}
		 
		// 공 찾기 결과 출력 
		@Override
B4b		public String toString() {
			String str = "";
			str += "  ___    ___    ___  \n";
			str += " |   |  |   |  |   | \n";
			str += " | 1 |  | 2 |  | 3 | \n";
			str += blanks( ball ) + "   O   \n";
			str += blanks( cup ) + ( ( this.cup == this.ball ) ? meet : dodge );
			return str;
B4e		}
		 
		// 공백 확보
		private String blanks( int column ) {
			String result = "";
			for ( int i = 1; i < column; i++ )
				result += "       ";
			return result;
		}
	}
 
 
	// 파일명 : ./src/find/FindBomb.java
	package find;
	 
	// 폭탄 피하기 클래스 
	public class FindBomb extends FindBall
	{
		// 폭탄 피하기 초기화 : 공 찾기 대신 폭탄 피하기에 맞게 메시지 설정 
E1b		public FindBomb() {
E11			super();
			super.message = "1, 2, 3 중에서 폭탄을 숨긴 상자를 찾으세요: ";
			super.meet   = " 펑!! \n";
			super.dodge  = " 휴우!\n";
E1e		}
	}

실행 순서

 
 					※ 실행순서 및 메모리상태는 A키(이전) 및 D키(다음)를 눌러도 확인할 수 있습니다