UP & Down Game
import java.util.Scanner;

//UP & Down Game 
//1~99까지 범위의 랜덤한 숫자를 맞추는 게임
//게임점수 -> 현재까지의 최고기록은 n회입니다.(가장 빨리 맞췄을때)
//플레이한적이 없을때 게임점수는-> 현재까지의 최고기록은 100회입니다 혹은 플레이한적 없습니다 출력

//컴퓨터enemy가 참여하여 함께 게임경쟁 

//player와 enemy가 각자의 정보를 이용하여 경쟁


public class Quiz_01 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int com; //컴퓨터의 패
		int player; //플레이어의 패
		int enemy; //경쟁자 Enemy의 패
		//int score=100; //게임최고기록
		//int player_score=0; //플레이어의 맞출때까지의 cnt기록
		//int enemy_score=0;  //enemy의 맞출때까지의 cnt기록
		int player_win=0; //플레이어 승리기록
		int enemy_win=0; //Enemy승리기록
		int cnt=0; //현재게임기록
		int menu; //메뉴선택
		int min=1; //enemy의 난수 최소값
		int max=99; //enemy의 난수 최대값

		//Up&Down Game 시작
		while(true) {

			//메뉴 입력 시작
			while(true) { 
				System.out.println("=== Up & Down Game ===");
				System.out.println();
				System.out.println("1. Game Start");
				System.out.println("2. Game Score");
				System.out.println("3. End Game");
				System.out.println();
				System.out.print("> ");
				try { //메뉴입력
					menu= Integer.parseInt(sc.nextLine());
					if(!(menu==1 || menu==2 ||menu==3)){
						System.out.println("메뉴를 다시 입력해주세요");
						continue;
					}
					break;
				}catch(Exception e) { //메뉴입력 예외처리
					System.out.println("숫자를 입력해주세요.");
					continue;
				}

			}
			//메뉴 입력 끝

			//게임기능
			while(true) {
				if(menu==1) {//1.Game Start
					cnt=0; //현재게임기록 초기화
					System.out.println("<< Game Start >>");
					com = (int)(Math.random()*(99-1+1)+1); //현재게임의 맞춰야 할 수 생성(com의 난수 생성)

					while(true) { 
						System.out.print("Input Number : "); //플레이어의 예측숫자 입력 
						try {
							player=Integer.parseInt(sc.nextLine());
							if(player>=100 || player<=0) { //1~99 외 숫자 입력 받았을 경우 재입력
								System.out.println("입력범위를 초과하였습니다.");
								continue;
							}
							//player_score+=1;
							cnt+=1; //현재게임기록 횟수 추가
							if(player==com) { //숫자를 맞췄을 경우 
								System.out.println("<< 플레이어 정 답 >>");
								player_win+=1;
								break;
							}else if(player>com) { //플레이어가 입력한 숫자가 맞출 숫자보다 높을 경우
								System.out.println("<< D O W N >>");

								if(max>player) {
									max=player-1;
								}
							}else { //플레이어가 입력한 숫자가 맞출 숫자보다 낮은 경우
								System.out.println("<< U P >>");
								if(min<player) {
									min=player+1;
								}
							}
						}catch(Exception e) { //플레이어가 숫자 외의 입력을 넣었을 경우
							System.out.println("숫자를 입력해주세요.");
							continue;
						} 

						enemy=(int)(Math.random()*(max-min+1)+min); //enemy의 난수 생성
						System.out.println("enemy 선택한 수 " + enemy); //enemy의 난수 출력
						//enemy_score+=1;
						if(enemy==com) { //숫자를 맞췄을 경우 
							System.out.println("<< Enemy 정 답 >>");
							enemy_win+=1;
							break;
						}else if(enemy>com) { //enemy의 숫자가 맞출 숫자보다 높을 경우
							max=enemy-1;
							System.out.println("<< D O W N >>");
						}else { //enemy의 숫자가 맞출 숫자보다 낮은 경우
							min=enemy+1;
							System.out.println("<< U P >>");

						}
					}
					break;
				}else if(menu==2) {//2.Game Score
					/*
					if(score>cnt) //게임최고기록보다 현재기록이 횟수가 더 낮으면 
					{
						score=cnt; //현재기록을 게임최고기록으로 갱신(대입)
					}
					System.out.println("<< Game Score >>");
					System.out.println("현재까지의 최고 기록은" + score + "회입니다"); //게임최고기록 출력
					 */

					System.out.println("플레이어 : " +player_win +"승" + enemy_win + "패");
					System.out.println("Enemy : " +enemy_win + "승" + player_win+"패");
					System.out.println();

					break;
				}else if(menu==3){ //3.End Game
					System.out.println("프로그램을 종료합니다");
					System.exit(0);
				}

			}
		} //Up&Down Game 종료
	}

}

/*
<필요변수>
1.Enemy의 난수
2.Enemy의 난수 생성을 위한 최소값
3.Enemy의 난수 생성을 위한 최대값
4.플레이어 승리
5.Enemy의 승리

(Level2)
1. 사람이 숫자를 선택한다.
2. 사람이 선택한 숫자를 맞출 숫자와 비교한다.
(사람이 맞췄을경우)-> 사람의 승리를 카운트한다. 게임이 종료된다, 

(못맞췄을경우)-> 
3.Enemy가 숫자를 선택한다.(=난수를 생성한다.)
4.Enemy의 숫자를 맞출 숫자와 비교한다.
5.Enemy 자신이 만든 숫자의 Up&Down에 따라서 최소값,최대값을 수정한다
(Enemy가 맞췄을 경우)->Enemy의 승리를 카운트한다.게임이 종료된다. 



(Level3)
유저가 up&down과 무관한 엉뚱한 숫자를 넣었을 경우에
min값과 max값을 fix하는 방법....


50에서 up이 나왔는데
40을 썼을 경우...

50>40
max>player
break;

50에서 down이 나왔는데
60을 썼을 경우...

50<60
min<player
break; 

 */