package kr.or.iei.quiz;
import java.util.Random;
import java.util.Scanner;
public class UpDown {
public void upDownQuiz() {
Random r = new Random();
Scanner sc = new Scanner(System.in);
int highScore = 0;
boolean power = true;
while(power) {
System.out.println("=====1~99 랜덤숫자게임=====");
System.out.println("1. Game Start");
System.out.println("2. Game Score");
System.out.println("3. End Game");
System.out.print("입력> ");
int menu = sc.nextInt();
int gameNum = 1;
int ranNum = r.nextInt(99)+1;
if(ranNum < 1 || ranNum >99) {
System.out.println("잘못된 랜덤 숫자입니다.");
System.out.println("프로그램이 종료됩니다.");
break;
}
switch(menu) {
case 1:
while(true) {
System.out.print(gameNum+"회차 번호 입력: ");
int num = sc.nextInt();
if(num < 1 || num > 99) {
System.out.println("잘못된 입력입니다. 다시 입력하세요");
continue;
}
if(ranNum == num) {
System.out.println("<< 정답 >>");
if(highScore == 0 || gameNum < highScore) {
highScore = gameNum;
}
break;
}else if(ranNum > num){
System.out.println("<< UP >>");
gameNum += 1;
}else if(ranNum < num) {
System.out.println("<< DOWN >>");
gameNum += 1;
}
}
break;
case 2:
if(highScore==0) {
System.out.println("아직 기록이 없습니다.");
}else{
System.out.println("현재 최고 기록은 "+highScore+"회 입니다.");
}
break;
case 3:
power = false;
System.out.println("게임을 종료합니다.");
}
}
}
}
반복문, 조건문, 분기문과 Random 클래스를 활용해 만들어봤다. 처음에는 엄청난 노가다 작업이라고 생각을 했는데 하다 보니 재미있었다. switch문에 case 1에 break; 를 case 1 안에 상단 부분에 작성하여 코드가 제대로 돌지 않고 게임이 종료되었다. 게임점수를 최고기록이 경신될 때 마다 최고기록을 갱신해주는 부분에서 조금 헤멨다. up과 down이 출력될 때만 입력한회차(gameNum)가 늘어나게 하여 정답이 되기까지 재입력을 받게 하고 정답을 맞췄을 때, 최고기록(highScore)의 값이 0이었거나, 입력한회차(gameNum)가 최고기록(highScore)보다 낮은 경우 최고기록(highScore)에 입력한회차(gameNum)를 대입해줬다. highScore를 최고기록으로 출력해주니 문제가 해결되었다.
생각보다 공부가 되는 부분이 많아 좋았다. 배운 것을 활용하여 간단한 예제 코드라도 작성해봐야겠다. 지금까지 배운 것을 토대로 DB를 활용하지 않고 만드는 간단한 일회성 노가다 게시판을 만들어 볼 예정이다.