문제
상자 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키(다음)를 눌러도 확인할 수 있습니다