본문 바로가기
개발 언어/JAVA

09.24 JAVA 배운 내용으로 숫자 맞추기 게임만들기

by 개발자결정 2024. 9. 25.
package kr.or.ksmart.thisisJava.sample;

import java.util.Scanner;

public class numberHit {
	static boolean playSituation = true;
	static boolean victory = false;
	static int randomNum = 0;
	static int choiceNum = 0;
	static int roundCount = 10;
	static int endGameCount = 0;
	static int choice = 0;
	static int subChoice = 0;
	static int endChoice = 0;
	static Scanner sc = new Scanner(System.in);
	
	public static void main() {
		
		while(playSituation) {
			if(endGameCount == 0) {
				System.out.println("-------------------------------");
				System.out.println("숫자맞추기 게임에 오신 것을 환영합니다.\n");
				System.out.println("  1.시작하기         2.종료하기");
				System.out.println("-------------------------------");
			} else if (victory == true) {
				System.out.println("-------------------------------");
				System.out.println("  1.다시하기         2.나가기");
				System.out.println("-------------------------------");
			} else {
				System.out.println("-------------------------------");
				System.out.println("  1.재도전하기         2.포기하기");
				System.out.println("-------------------------------");
			}
			if(endGameCount == 0) {
				choice = sc.nextInt();
			}else {
				endChoice = sc.nextInt();
				//한번이라도 게임을 진행했지만 실패한 경우
				if (endChoice == 2 && victory == false) {
					System.out.println("난이도를 포기하셨습니다.");
					endGameCount = 0;
					continue;
				//한번이라도 게임을 진행하고 승리한 경우
				} else if(endChoice == 2 && victory == true){
					endGameCount = 0;
					continue;
				}
			}
			switch(choice) {
			// 난이도 선택
			case 1:
				if(endGameCount == 0) {
					System.out.println("-------------------------------");
					System.out.println("       난이도를 선택해주세요");
					System.out.println("1.쉬움  2.보통  3.어려움  4.이전으로");
					System.out.println("-------------------------------");
					
					subChoice = sc.nextInt();
				}
				
				if(subChoice == 4) {
					break;
				}else {
					switch(subChoice) {
					case 1:
						randomNum = (int)(Math.random() * 50) + 1;
						System.out.println("쉬움난이도는 1~50까지 숫자중 랜덤으로 하나의 숫자가 정해집니다.");
						System.out.println("기회는 총 10번입니다.");
						mainGame(subChoice);
						break;
					case 2:
						randomNum = (int)(Math.random() * 100) + 1;
						System.out.println("보통난이도는 1~100까지 숫자중 랜덤으로 하나의 숫자가 정해집니다.");
						System.out.println("기회는 총 10번입니다.");
						mainGame(subChoice);
						break;
					case 3:
						randomNum = (int)(Math.random() * 1000) + 1;
						System.out.println("어려움난이도는 1~1000까지 숫자중 랜덤으로 하나의 숫자가 정해집니다.");
						System.out.println("기회는 총 10번입니다.");
						mainGame(subChoice);
						break;
					}
				}
				break;
			case 2:
				//종료하기를 선택한경우 반복문 탈출
				System.out.println("게임을 종료하셨습니다.");
				playSituation = false;
				break;
			default:
				System.out.println("잘못된 선택이에요");
			}
		}
	}
	
	//메인 게임 진행
	public static void mainGame(int lvChoice) {
		System.out.println("숫자를 입력해주세요");
		for(int count = 0; count < 10 ; count++) {
			System.out.print("입력 숫자 : ");
			choiceNum = sc.nextInt();
			//숫자를 맞춘경우
			if(choiceNum == randomNum) {
				switch(lvChoice) {
				case 1:
					System.out.println("정답입니다! 승리하셨습니다.\n다른 난이도도 도전해보세요");
					break;
				case 2:
					System.out.println("정답입니다! 승리하셨습니다.\n어려움 난이도도 도전해보세요");
					break;
				case 3:
					System.out.println("정답입니다! 당신은 숫자맞추기 마스터!");
					break;
				}
				victory = true;
				break;
			//입력한 숫자가 정답보다 큰경우
			}else if(choiceNum > randomNum) {
				System.out.println("입력한 숫자가 정답보다 큽니다.");
				System.out.println("남은 기회가 " + (roundCount - count - 1) + "번 남았습니다.");
			//입력한 숫자가 정답보다 작은경우
			}else if(choiceNum < randomNum) {
				System.out.println("입력한 숫자가 정답보다 작습니다.");
				System.out.println("남은 기회가 " + (roundCount - count - 1) + "번 남았습니다.");
			}
			
			//모든 기회를 다 사용한 경우
			if(count == 9) {
				System.out.println("기회를 다 사용하셨습니다.");
				System.out.println("정답은 " + randomNum + "입니다.\n아쉽네요 다시한번 도전해보세요!");
				victory = false;
			}
		}
		endGameCount++;
	}
}

 

실행 결과

 

'개발 언어 > JAVA' 카테고리의 다른 글

09.10 JAVA 변수 타입, 연산자, 주석  (1) 2024.09.10
09.09 JAVA 프로그래밍  (0) 2024.09.09