drexqq

[Java, 자바] baseball(숫자야구).ver2 본문

공부노트/개인공부!

[Java, 자바] baseball(숫자야구).ver2

drexqq 2020. 5. 29. 17:37
728x90
반응형

기존 작성하였던 baseball(숫자야구)게임을 함수화 해보았다.

 

코드

 

package baseballFunc;

import java.util.Scanner;

public class mainClass {

	public static void main(String[] args) {
		/*
		 	baseball
		 	
		 	1. random
		 	
		 	///loop
		 	2. userInput
		 	
		 	3. finding
		 	
		 	4. message
		 	///
		 	
		 	5. result
		 	
		 */
		baseball();
	}
	
	static void baseball() {
		boolean clear = loop();
		if (clear)	System.out.println("Game Clear!!");
		else		System.out.println("Game Over..");
	}
	// 랜덤숫자 생성
	static int[] random() {
		System.out.println("랜덤 숫자 생성");
		// 랜덤숫자
		int r_num[] = new int[3];
		int r, w;
		boolean swit[] = new boolean[10];
		w = 0;
		while (w < 3) {
			r = (int) (Math.random() * 10);	// 0 ~ 9
			if (swit[r] == false) {
				swit[r] = true;		// 00100 00000
				r_num[w] = r + 1;	// 1 ~ 10
				w++;
			}
		}
		for (int i = 0; i < r_num.length; i++) {
			System.out.println(r_num[i]);
		}
		return r_num;
	}
	
	// 루프
	static boolean loop() {
		boolean clear = false;
		int r_num[] = random();
		int w = 0;
		while (w < 10) {
			int u_num[] = userInput();
			if (strikeBall(u_num, r_num) > 2) {
				clear = true;
				break;
			};
			w++;
		}
		return clear;
	}
	
	// 유저 인풋
	static int[] userInput () {
		Scanner sc = new Scanner(System.in);
		int u_num[] = new int[3];
		System.out.println("숫자를 입력해주세요.");
		boolean check = false;
		int w1;
		while (true) {
			check = false;
			w1 = 0;
			while (w1 < 3) {
				u_num[w1] = sc.nextInt();
				w1++;
			}
			out:for (int i = 0; i < u_num.length; i++) {
				for (int j = 0; j < u_num.length; j++) {
					if (u_num[i] == u_num[j] && i != j) {
						check = true;
						break out;
					}
				}
			}
			if (check == false) {
				break;
			}
		}
		return u_num;
	}
	
	// 스트라이크 볼
	static int strikeBall (int user[], int ran[]) {
		int strike, ball;
		strike = ball = 0;
		for (int i = 0; i < user.length; i++) {
			for (int j = 0; j < ran.length; j++) {
				if (user[i] == ran[j] && i != j) {
					ball++;
				}
			}
		}
		for (int i = 0; i < user.length; i++) {
			if (user[i] == ran[i]) {
				strike++;
			}
		}
		System.out.println(strike+"S, "+ball+"B");
		return strike;
	}
	
}
728x90
반응형
Comments