ejyoo's 개발 노트

Level1. 야구 게임 본문

BackEnd/순수 Java 로직(프로그램)

Level1. 야구 게임

ejyoovV 2021. 3. 4. 08:52

순수 자바로 야구게임을 구현하였다.

Class는 1개이며, 게임 방식은 아래와 같다.

1) 컴퓨터는 프로그램이 시작할 때, 랜덤한 수 세자리를 갖고 있는다.

2) 사용자는 한 자리 수당 1~9까지의 총 3개의 숫자를 한번에 입력한다. (예 : 392)

3) 사용자가 입력한 숫자와 컴퓨터가 가지고 있는 랜덤한 수 세자리를 각각 비교하여 결과를 도출한다.

- 스트라이크 : 숫자의 자리수, 숫자가 모두 같을 때

- 볼 : 숫자는 맞지만 자리가 다를 때

- 아웃 : 숫자가 컴퓨터가 가지고 있는 랜덤한 수 세자리와 다를 때

package c_statement;

import java.util.Scanner;

public class Baseball {
	public static void main(String[] args) {
		/*
		 * 135 123 : 1S 1B 1O 531 : 1S 2B 0O 321 : 0S 2B 1O
		 * 
		 * 스트라이크 : 1이라는 숫자와 자리수도같을 때 볼 : 3이라는 숫자가 있지만 자리수가 다름 아웃 : 아예 없을 경우
		 * 
		 * 본 코드에서 해결되지 않은 문제 : 사용자 입력이 null 일때 해결이 안됨.
		 */
		// 1부터 9까지의 숫자를 3개 발생시키고 겹치지 않게
		int random1 = (int) (Math.random() * 9) + 1;
		int random2 = (int) (Math.random() * 9) + 1;
		int random3 = (int) (Math.random() * 9) + 1;
		
		//몇회 시도인지 판별
		int count = 1;
		// 게임종료 flag
		boolean result = true;

		while (true) {
			random1 = (int) (Math.random() * 9) + 1;
			random2 = (int) (Math.random() * 9) + 1;
			random3 = (int) (Math.random() * 9) + 1;
			if(random1 != random2 && random1 != random3 && random2 != random3){
				break;
			}
		}
		
		// 스트라이크가 3개가 될 때 까지 무한반복
		while (result) {
			//
			int strike = 0;
			int ball = 0;
			int out = 0;

			System.out.print(random1 + "\t");
			System.out.print(random2 + "\t");
			System.out.println(random3);

			
			//3자리수 한번에 받기
			System.out.print("3자리 숫자>");
			int input = Integer.parseInt(s.nextLine());
			int userNum3 = input % 10;
			input /= 10;
			int userNum2 = input % 10;
			input /= 10;
			int userNum1 = input % 10;
		

			if (random1 == userNum1) {
				strike++;
			} else if (random1 == userNum2 || random1 == userNum3) {
				ball++;
			} else{
				out++;
			}
			
			// ==================
			
			if (random2 == userNum2) {
				strike++;
			} else if (random2 == userNum1 || random2 == userNum3) {
				ball++;
			} else{
				out++;
			}
			
			// ==================
			
			if (random3 == userNum3) {
				strike++;
			} else if (random3 == userNum1 || random3 == userNum2) {
				ball++;
			} else{
				out++;
			}

			// 결과 : =======================
			System.out.println("==============================");
			System.out.print(count+"차 시도 결과 : ");
			System.out.println("스트라이크 : " + strike + " 볼 : " + ball + " 아웃 : "
					+ out);

			// 동기부여 ==============================
			if (strike == 3) {
				System.out.println("성공!!!!!!!!!야구게임을 종료합니다.");
				break;
			} else if (strike == 2) {
				
				System.out.println("오오!!! 조금만 더 시도해 보세요");
				count++;
			} else {
				System.out.println("잘 생각해 보시오ㅋㅋ");
				count++;
			}
			System.out.println("==========================");
		}
	}
}

'BackEnd > 순수 Java 로직(프로그램)' 카테고리의 다른 글

전화번호 관리 프로그램  (0) 2021.03.08
Level1. 타자게임  (0) 2021.03.04
[JAVA] Level1. 설문조사 양식 만들기  (0) 2021.03.04