본문 바로가기

Java/java 기초

야구 게임 만들어 보기

메소드없이 만들어 보니 새삼 메소드의 소중함을 느꼈다

public class mainClass {
	public static void main(String[] args) {
		/*
		 * baseball
		 * 
		 * random 1 ~ 10 -> 7 3 5
		 * 
		 * user input -> 3개 숫자 1 2 3 -> 자리는 안맞앗는데 숫자는 맞는 경우 1ball 7 8 9 -> 1 strike 7 5
		 * 3 -> 1 strike 2 ball
		 * 
		 * rNumber1 != rNumber2 !=renum3
		 * 
		 * user input -> 같은 수가 입력이 되면 다시 입력!
		 * 
		 * 10번의 기회 replay
		 */
		
		//선언
		Scanner scanner = new Scanner(System.in);
		
		int randArray[] = new int[3];
		int userArray[] = new int[3];
		int strike = 0;
		int ball = 0;
		int count = 10;

		//랜덤함수 삽입
		for (int i = 0; i < randArray.length; i++) {
			randArray[i] = (int) (Math.random() * 10) + 1;	
		}	
		//중복 제거
		for (int i = 0; i < randArray.length; i++) {
			for(int j = 0; j < randArray.length; j ++) {
				if(randArray[i] == randArray[j] && (i != j)) {
					randArray[i] = (int)(Math.random() * 3) + 1;
					j = -1;
				}
			}
			
		}		
		
		while(true) {
			for (int i : randArray) {
				System.out.print(i + " ");
			}
			System.out.println();
		
			System.out.println("============================");
			System.out.println("남은 횟수: " + count);
			//유저 입력 하기
			System.out.println("생각한 값을 입력하세요");
			for(int i = 0; i < 3; i ++) {
				int userNum = scanner.nextInt();
				if(userNum < 0 || userNum > 10) {
					System.out.println("1~ 10 범위내의 값을 입력해주세요");
					userArray[i] = scanner.nextInt();
				} else {
					userArray[i] = userNum;
					for(int j = 0; j < 3; j ++ ) {
						//중복 제거
						if(userArray[i] == userArray[j] && (i != j)) {
							System.out.println("값이 중복됩니다 다시 입력하세요");
							userArray[i] = scanner.nextInt();
							j = -1;
						}
					}
				}
				
			
				System.out.println( i + " 번째 " + userArray[i] + " ");
				System.out.println();
			}
			
			
		//비교하기 
			for(int i = 0; i < 3; i ++) {
				if(userArray[i] == randArray[i]) {
					strike ++;		
				} else {
					for(int j = 0; j < 3; j ++) {
						if(userArray[i] == randArray[j] && (i != j)) {
							ball++;
						}
					}
					
				}		
			}
			//카운트값 감소
			count--;
			
			//게임오버 구현
			if(count == 0) {
				System.out.println("게임 오버");
				
				System.out.println("게임을 다시 하시곘습니까? (y/n)");
				
				String answer = scanner.next();
				if(answer.equalsIgnoreCase("y")) {
					count = 10;
					strike = 0;
					ball = 0;
					continue;
					//초기화
				} else {
					System.out.println("게임을 종료합니다");
					break;
				}
			}
			
		//결과 출력
			System.out.println("스트라이크 : " + strike);
			System.out.println("ball : " + ball);
			//값 초기화
			if(strike == 3) {
				System.out.println("정답입니다!!");
				System.out.println(10 - count + "번만에 정답을 맞추셨습니다!");
				System.out.println("게임을 다시 하시곘습니까? (y/n)");
				
				String answer = scanner.next();
				if(answer.equalsIgnoreCase("y")) {
					count = 10;
					strike = 0;
					ball = 0;
//					userArray = new int[3];
					//랜덤함수 재 선언
					//랜덤함수 삽입
					for (int i = 0; i < randArray.length; i++) {
						randArray[i] = (int) (Math.random() * 10) + 1;	
					}	
					//중복 제거
					for (int i = 0; i < randArray.length; i++) {
						for(int j = 0; j < randArray.length; j ++) {
							if(randArray[i] == randArray[j] && (i != j)) {
								randArray[i] = (int)(Math.random() * 3) + 1;
								j = -1;
							}
						}
						
					}		
					// 선언 종료
					
					
					continue;
					//초기화
				} else {
					System.out.println("게임을 종료합니다");
					break;
				}
			}
			strike = 0;
			ball = 0;	
		}
		scanner.close();
}
	
}