JAVA 프로그래밍

문제

상자 3개 중 하나에 임의로 공이나 폭탄을 숨기고 그 위치를 맞추는 문제입니다 이를 해결하는 프로그램의 다음 실행상태에 대해 빈칸을 채우세요 

프로그램의 실행순서 및 실행상태

1  public static void main( String[] args ) {  

3                   new FindBall();
         cup      meet         message            (obj01)
        ball     dodge         FindBall(), hide(), find(), ...
 
                        main()                                       
game            

B1b  public FindBall() {

B1e  } 
         cup  0   meet message 1, 2, 3 중에서... (obj01)
        ball  1  dodge FindBall(), hide(), find(), ...
 
                        main()                                       
game            
  ()
this

2   FindBall game =
                        main()                                       
game

4   game.hide();

B2b  public void hide() { 

B2e  }
         cup  0   meet 찾았다! message  1, 2, 3 중에서...  (obj01)
        ball dodge 놓쳤다! FindBall(), hide(), find(), ...
 
                        main()                                       
game  (obj01) 
()
this

5   game.find( scan );

B3b  public void find( Scanner scan ) {

1, 2, 3 중에서 공을 숨긴 컵을 찾으세요:  3

B3e  }
         cup  meet 찾았다! message  1, 2, 3 중에서...  (obj01)
        ball  2  dodge 놓쳤다! FindBall(), hide(), find(), ...
 
                        main()                                       
game   (obj01)  
  ()
this
scan  (Scanner) 

7                       game );

B4b  public String toString() {

B4e  }

6   System.out.println(
  ___    ___    ___  
| | | | | |
| 1 | | 2 | | 3 |
O
놓쳤다!

9          new FindBomb();
         cup  3   meet 찾았다! message  1, 2, 3 중에서...  (obj01)
        ball  2  dodge 놓쳤다! FindBall(), hide(), find(), ...
 
         cup      meet         message            (obj02)
        ball     dodge         FindBall(), hide(), find(), ...
        FindBomb()
                        main()                                       
game   (obj01)  

E1b  public FindBomb() {

E11   super(); 

B1b  public FindBall() {

B1e  } 
         cup  0   meet message 1, 2, 3 중에서... (obj02)
        ball  1  dodge FindBall(), hide(), find(), ...
        FindBomb()
                        main()                                       
game   (obj01)  
  ()
this
  ()
this

E1e  }
         cup  0   meet message 1, 2, 3 중에서... (obj02)
        ball  1  dodge FindBall(), hide(), find(), ...
        FindBomb()
                        main()                                       
game   (obj01)  
  ()
this

8   game =
                        main()                                       
game

10   game.hide();

B2b  public void hide() { 

B2e  }
         cup  0   meet 펑!! message  1, 2, 3 중에서...  (obj02)
        ball dodge 휴우! FindBall(), hide(), find(), ...
        FindBomb()
                        main()                                       
game   (obj02)  
()
this

11   game.find( scan );

B3b  public void find( Scanner scan ) {

1, 2, 3 중에서 폭탄을 숨긴 상자를 찾으세요: 1

B3e  }
         cup  meet 펑!! message  1, 2, 3 중에서...  (obj02)
        ball  1  dodge 휴우! FindBall(), hide(), find(), ...
        FindBomb()
                        main()                                       
game   (obj02)  
()
this

13                       game );

B4b  public String toString() {

B4e  }

12   System.out.println(
  ___    ___    ___  
| | | | | |
| 1 | | 2 | | 3 |
O
펑!!

14  }


프로그램 코드

	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		}
	}
	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;
		}
	}

	package find;
	
	public class FindBomb extends FindBall 
	{
E1b		public FindBomb() {
E11			super(); 
			super.message = "1, 2, 3 중에서 폭탄을 숨긴 상자를 찾으세요: ";
			super.meet   = " 펑!! \n";		
			super.dodge  = " 휴우!\n";		
E1e		}
	}