Advanced Java | 숫자야구게임

효돌dev.·2022년 1월 26일
0

고급 Java

목록 보기
5/5

문제) Set을 이용하여 숫자 야구 게임 프로그램을 작성하시오.
컴퓨터의 숫자는 난수를 이용하여 구한다.
(스트라이크는 S, 볼은 B로 나타낸다)
예시) 컴퓨터의 난수 ==> 9 5 7
실행예시)
숫자입력 ==> 3 5 6
3 5 6 ==> 1S 0B
숫자입력 ==> 7 8 9
7 8 9 ==> 0S 2B
축하합니다 당신은 4번째만에 맞췄습니다.

public class BaseBallTest {
	ArrayList<Integer> numList;		//난수가 저장될 List
    ArrayList<Integer> userList;	//사용자가 입력한 값이 저장될 List
    private int strike;				//스트라이크 개수
    private int ball;				//볼 개수
    
    Scanner scan = new Scanner(System.in);
    
    public static void main(String[] args) {
    	/*
        	BaseBallTest test = new BaseBallTest();
            test.gameStart();
        */
        new BaseBallTest().gameStart();
    }
//게임이 시작되는 메서드
public void gameStart(){
    getNum();

//확인용으로 만들어진 난수를 출력한다.
   System.out.println("컴퓨터 난수 : " + numList);
}

1~9사이의 서로 다른 난수 3개를 만들어서 List에 저장하는 메서드 (Set이용)

   private void getNum(){
    	Set<Integer> numSet = new HashSet<>();

        //1~9사이의 난수 3개 만들기
        while(numSet.size()<3){
        	numSet.add((int)(Math.random()*9+1));
        }

        //만들어진 난수를 List에 저장하기
        numList = new ArrayList<>(numSet);

        //List의 데이터를 섞어준다
        Collections.shuffle(numList);
    }

사용자로부터 3개의 정수를 입력받아 List에 저장하는 메서드

    //입력한 값은 서로 중복되지 않게 한다.
    private void inputNum(){
    	//한자씩 입력받음
        int n1, n2, n3;		//입력한 정수가 각각 저장될 변수 선언

        do{
        	System.out.print("숫자입력 ==> ");
		n1 = scan.nextInt();
		n2 = scan.nextInt();
		n3 = scan.nextInt();
        if(n1==n2||n1==n3||n2==n3){
        	System.out.println("중복되는 숫자는 입력할 수 없습니다.");
		System.out.println("다시 입력하세요.");
        }
        }while(n1==n2||n1==n3||n2==n3);

        //입력한 값을 List에 저장한다.
        userList = new ArrayList<>();
        userList.add(n1);
        userList.add(n2);
        userList.add(n3);
    }

스트라이크와 볼의 개수를 구하고 이 값을 출력하는 메서드

private void ballCount(){
	strike = 0;
    ball = 0;		//스트라이크와 볼의 개수 초기화
    
    for(int i=0; i<userList.size(); i++){
    	for(int j=0; j<numList.size(); j++){
        	if(userList.get(i) == numList.get(j)){
            	if(i==j){	//위치가 같은지 비교
                	strike++;
                }else{
                	ball++;
                }
            }
        }
    }
}

System.out.println(userList.get(0)+","+userList.get(1)+","+userList.get(2)
		      + "==> " + strike +"S "+ball+"B");
```
profile
뭐든 다 하고싶음

0개의 댓글