프로그래밍 언어 복습/JAVA

#13 JAVA 배열로 만든 숫자야구게임

사재원 교수 2022. 5. 16. 20:43
package hihihi;



import java.util.Arrays;

import java.util.Random;

import java.util.Scanner;



public class first {

	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);

		Random ran = new Random();

		//컴퓨터 숫자 만들기 시작

		int comdata[] = new int[3];

		for(int i=0;i<comdata.length;i++) {

			int num = ran.nextInt(9)+1; //1~9랜덤 숫자 랜덤

			int count = 0;

			for(int j=0;j<comdata.length;j++) {

				if(comdata[j] == num) {

					count ++;

				}

			}

			if(count == 0) {

				comdata[i] = num;

			}else {

				i --;

			}

		}

		//컴퓨터 숫자 만들기 끝 comdata

		System.out.println(Arrays.toString(comdata)); //정답

		int tot = 0;

		while(true) {

			int stk = 0; //스트라이크 횟수

			int ball = 0; //볼 횟수

			System.out.print("시작(1)/종료(2) 입력 : ");

			int start = scan.nextInt(); //시작 종료 선택하는 곳

			if(start == 1) {

				int[] userdata = new int[3];

				int c = 0;

				tot ++;

				while(c<=2) {

					//유저 숫자 받는 곳

					int usernum;//유저 숫자 입력

					while(true) { //중복체크

						System.out.print((c+1)+"번쨰 숫자 입력(중복x) : ");

						usernum = scan.nextInt();

						int count = 0;

						for(int i=0;i<userdata.length;i++) {

							if(userdata[i]==usernum) {

								count ++;

							}

						}

						if(count == 0) {

							break;

						}else {

							System.out.println("중복된 숫자가 있습니다.");

						}

					}//중복에 안걸리면 루프탈출

					userdata[c] = usernum;

					c ++;

				}

				System.out.println("입력한 유저 숫자 : " + Arrays.toString(userdata));

				//유저 숫자 입력 완료

				//컴퓨터 숫자와 유저 숫자를 비교 ! 

				for(int i=0;i<userdata.length;i++) { //유저 ex)1 ,2, 3

					int count = 0;

					for(int j=0;j<comdata.length;j++) { //컴 ex) 1, 2, 3

						if(userdata[i]==comdata[j]) { //유저 숫자가 컴퓨터 숫자안에 있느냐?

							count ++;

						}

					}

					if(count==1) {

						if(userdata[i] ==comdata[i]) {

							stk ++;

						}else {

							ball ++;

						}

					}

				}

				if(stk==0 && ball==0) {

					System.out.println("아웃 ! ");

				}else {

					System.out.println("스트라이크 횟수 : " + stk);

					System.out.println("볼 횟수 : " + ball);

					if(stk == 3) {

						System.out.println("3 스트라이크 ! 성공 !");

						System.out.println(tot + "번 만에 맞추셨습니다.");

						System.out.println("게임 종료");

						break;

					}

				}



			}else if(start == 2) {

				System.out.println("게임 종료");

				break;

			}else {

				System.out.println("다시 입력 바람.");

			}



		}

	}

}

1. comdata배열에 컴퓨터 랜덤숫자 중복없이 3개 받기

2. userdata배열에 유저 랜덤숫자 중복없이 3개 받기

3. 두 값을 비교 스트라이크 볼 횟수 추출

4. 3스트라이크가 나올때까지 2번~3번 반복

5. 3스트라이크 나오면 게임 종료 !