프로그래밍 언어 복습/JAVA

#25 JAVA 숫자야구게임 클래스화

사재원 교수 2022. 5. 20. 17:58
package hihihi;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

//컴퓨터 숫자 받기
class Comdata{
	Random r = new Random();
	public int[] getComnum() {
		int[] comdata = new int[3];
		for(int i=0;i<comdata.length;i++) {
			comdata[i] = r.nextInt(9)+1;
			for(int j=0;j<i;j++) {
				if(comdata[i]==comdata[j]) {
					i--;
				}
			}
		}
		return comdata;
	}
}

//유저 숫자 받기
class Userdata{
	Scanner sc = new Scanner(System.in);
	public int[] getUsernum() {
		int[] userdata = new int[3];
		
		for(int i=0;i<userdata.length;i++) {
			System.out.print(i+1 + "번째 숫자 입력 : ");
			userdata[i] = sc.nextInt();
			for(int j=0;j<i;j++) {
				if(userdata[i]==userdata[j]) {
					i--;
				}
			}
		}
		return userdata;	
	}
}


//두 숫자를 비교해서 strike와 ball를 추출
class StkorBall{
	int stk = 0;
	int ball = 0;
	Comdata c = new Comdata();
	int[] comdata = c.getComnum();
	//System.out.println("컴퓨터 숫자 : " + Arrays.toString(comdata));
	public int[] howfar(Userdata u,int[] comdata) {
		int[] array = new int[2]; //array[0] = 스트라이크 , array[1] = 볼
		u = new Userdata();
		int[] userdata = u.getUsernum();
		System.out.println("유저 숫자 : " + Arrays.toString(userdata));
		for(int i=0;i<userdata.length;i++) {
			for(int j=0;j<comdata.length;j++) {
				if(userdata[i]==comdata[j]) {
					if(i==j) {
						stk++;
					}else {
						ball++;
					}
				}
			}
		}
		array[0] = stk;
		array[1] = ball;
		return array;
	}
	
}

//strike와 ball따라 stop keep going 실시
class GameStart{
	
	public void gameStart() {
		StkorBall sb = new StkorBall();
		Comdata c = new Comdata();
		Userdata u = new Userdata();
		while(true) {
			sb.stk = 0;
			sb.ball = 0;
			int[] array = sb.howfar(u, sb.comdata);
			System.out.println("스트라이크 횟수 : " + array[0]);
			System.out.println("볼 횟수 : " + array[1]);
			if(array[0] == 3) {
				System.out.println("3 스트라이크 ! 게임 종료 ! ");
				break;
			}
			
		}
	}
	
	
}


public class gta {
	public static void main(String[] args) {
		
		/*Comdata c = new Comdata();
		int[] array = c.getComnum();
		System.out.println(Arrays.toString(array));
		
		
		Userdata u = new Userdata();
		int[] array2 = u.getUsernum();
		System.out.println(Arrays.toString(array2));
		
		Comdata c = new Comdata();
		Userdata u = new Userdata();
		StkorBall sb = new StkorBall();
		System.out.println();
		int[] array3 = sb.howfar(u, c);
		System.out.println(Arrays.toString(array3));*/
		
		GameStart gs = new GameStart();
		gs.gameStart();
	}
}