[명품 Java] Open Challenge-3 (카드 번호 맞추기 게임)
2021. 11. 16. 15:02ㆍSolution`/Java
숨겨진 카드의 수를 맞추는 게임을 만들어보자. 0~99까지의 임의의 수를 가진 카드를 한 장 숨기고 이 카드의 수를 맞추는 게임이다. 아래의 화면과 같이 카드 속의 수가 77인 경우를 보자. 수를 맞추는 사람이 55라고 입력하면 "더 높게", 다시 70을 입력하면 "더 높게"라는 식으로 범위를 좁혀가면서 수를 맞춘다. 게임을 반복하기 위해 y/n을 묻고, n인 경우 종료된다.
package chap03;
import java.util.Scanner;
public class OpenChallenge {
static int RANDOM_NUMBER;
static int lowerBound = 0;
static int upperBound = 99;
static int guess;
static int index = 1;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
RANDOM_NUMBER = (int)(Math.random() * 100);
System.out.println("수를 결정하였습니다. 맞추어 보세요");
while (true) {
System.out.println(lowerBound + "-" + upperBound);
System.out.print((index++) + " >> ");
guess = Integer.parseInt(sc.nextLine());
if (guess == RANDOM_NUMBER) {
System.out.print("맞았습니다\n다시하시겠습니까(y/n) >> ");
String yn = sc.nextLine();
if (yn.toLowerCase().equals("y")) {
RANDOM_NUMBER = (int) (Math.random() * 100);
lowerBound = 0;
upperBound = 99;
index = 1;
System.out.println("\n수를 결정하였습니다. 맞추어 보세요");
} else {
break;
}
} else {
validationLowerUpper(guess);
}
}
}
static void validationLowerUpper(int guess) {
if (guess < RANDOM_NUMBER) {
System.out.println("더 높게");
lowerBound = guess;
} else {
System.out.println("더 낮게");
upperBound = guess;
}
}
}