초급JAVA 4 - 과제

voilà!·2021년 10월 31일
0

초급JAVA

목록 보기
8/24

숫자야구 게임 만들기

ex) 123 (내가 입력한 숫자)
135 : 1S 1B 1O (랜덤으로 뽑은 숫자와 비교)

스트라이크 : 숫자와 위치가 동일할 때
볼 : 숫자는 같지만 위치가 다를 때
아웃 : 숫자 3개가 볼이나 스트라이크가 아닐 경우

세자리의 스트라이크를 맞춰야 게임 종료!

<만들 순서>
1. 랜덤 숫자 발생 (1~9자리의 세자리 숫자, 중복안됨)
2. 사용자한테 입력받기
3. 정답이랑 비교하고 -> S B O 만들기

내 풀이

	> Scanner sc = new Scanner(System.in);
	/*
	int random1 = (int)(Math.random() * 9) + 1;;
	int random2 = (int)(Math.random() * 9) + 1;;
	int random3 = (int)(Math.random() * 9) + 1;;
    
		while(random1 == random2){
			random2 = (int)(Math.random() * 9) + 1;
		}
		while(random1 == random3 || random2 == random3){
			random3 = (int)(Math.random() * 9) + 1;
		}

	int strike = 0;
	int ball = 0;
	int out = 0;
	
	
	System.out.println("============ 숫자 야구 게임 ============");
	
	System.out.println("중복되지 않는 숫자 3개를 입력해주세요.");
	
	do{
		strike = 0;
		ball = 0;
		out = 0;	
		
		System.out.println("첫번째 숫자를 입력해주세요.>");
		int num1 = Integer.parseInt(sc.nextLine());
		
		System.out.println("두번째 숫자를 입력해주세요.>");
		int num2 = Integer.parseInt(sc.nextLine());
		
		System.out.println("세번째 숫자를 입력해주세요.>");
		int num3 = Integer.parseInt(sc.nextLine());
		
		if(random1 == num1){
			strike++;
		}else if(random1 == num2||random1 == num3){
			ball++;
		}else{
			out++;
			
		}if(random2==num2){
			strike++;
		}else if(random2 == num1||random2 == num3){
			ball++;
		}else{
			out++;
			
		}if(random3==num3){
			strike++;
		}else if(random3 == num1||random3 == num2){
			ball++;
		}else{
			out++;
		
		}if(strike == 3){
			System.out.println("========== 3S! YOU WIN!!! ==========");
			
		}else{
			System.out.println(strike + "S " + ball + "B " + out + "O ");
			System.out.println("========== 다시 시도해주세요!============");
		}
	}while(strike < 3);
    

선생님 풀이

    int a1 = 0;
    int a2 = 0;
    int a3 = 0;
    do{ a1 = (int)(Math.random() * 9) + 1;
        a2 = (int)(Math.random() * 9) + 1;
        a3 = (int)(Math.random() * 9) + 1;
    }while( a1 == a2 || a1 ==a3 || a2 == a3);
    int count = 0; //사용자가 몇번만에 정답을 맞추는지 횟수
    while(true){
	     System.out.println("3자리 숫자");
	     int input = Integer.parseInt(sc.nextLine());
	     int i3 = input % 10; //1의자리
	     input /= 10;
	     int i2 = input % 10; //10의 자리
	     input /= 10;
	     int i1 = input % 10; //100의 자리
         
	     int strike = 0;
	     int ball = 0;
	     int out = 0;
	     
	     if(a1 == i1) strike++;
	     if(a2 == i2) strike++;
	     if(a3 == i3) strike++;
	     
	     if(a1 == i2 || a1 == i3) ball++;
	     if(a2 == i1 || a2 == i3) ball++;
	     if(a3 == i1 || a3 == i2) ball++;
	     
	     out = 3 - strike - ball;
	     
	     System.out.println(++count + " 차 시도(" + i1 + i2 + i3+" ) : " + strike + "S" + ball + "B" + out + "O");
	     System.out.println("-------------------------------");
	     if(strike == 3){
	    	 System.out.println("정답입니다!");
	    	  break;
	     }

0개의 댓글