반응형

안녕하세요! 오늘은 JAVA로 만든 숫자야구 게임입니다.

 

˙ 숫자야구 규칙 

 

(1) 사용자의 입력숫자 4개에 대해서 숫자와 위치를 체크하여 결과 반환

      (숫자만 일치 : Ball / 숫자와 위치 둘다일치 : Strike)

 

(2) 스트라이크가 4개이면 우승으로 판정 

 

(3) 게임의 시도횟수가 10번 초과하면 실패(게임오버) 판정

 

 

˙  코드 

 

게임의 정답을 생성하는 메서드(임의의 중복되지 않은 4개의 숫자)

public ArrayList<Integer> random(){
      HashSet<Integer> ans = new HashSet<>();
      int cnt = 0;
      while(ans.size() < 4){
    	  if(cnt == 0){
    		  ans.add((int)(Math.random() * 9 + 1));
    		  continue;
    	  }
    	  ans.add((int)(Math.random() * 10));
         cnt ++;
      }
      ArrayList<Integer> answer = new ArrayList<>(ans);
      return answer;
   }

 

user로부터 4개의 입력을 받는 메소드 

   public String input(){
      System.out.println("------------------------------------");
      System.out.println("정답을 입력해 주세요.(숫자 4자리)");
      Scanner sc = new Scanner(System.in);
      while(true){
    	  int cnt = 0;
    	  String input = sc.next();
    	  Set<Character> unique = new HashSet<>();
    	  for(int i=0; i<input.length(); i++){
    		  if(!unique.add(input.charAt(i))){
    			  cnt++;
    		  }
    	  }
    	  
    	  if(input.length() != 4){
    		 System.out.println("0~9 사이의 숫자 4자리를 입력해 주세요.");
    	  }else if(input.charAt(0) == '0'){
    		  System.out.println("첫번째 자리에는 0이 올 수 없습니다. 다시 입력해 주세요.");
    	  }else if(cnt != 0){
    		  System.out.println("중복된 숫자가 존재합니다. 다시 입력해 주세요.");
    	  }else{
    		  try{
    			  Integer.parseInt(input);
    			  return input;
    		  }catch(Exception e){
    			  System.out.println("숫자만 입력해 주세요.");
    		  }
    	  }
      }

   }

 

정답 판별 메서드

   int chk(ArrayList<Integer> answer){
      int ball = 0;
      int strike = 0; 
      int cnt = 1;
      
      
      while(true){
    	  ArrayList<Integer> userInput = new ArrayList<>();
    	  
    	  if(cnt > 10){
    	      System.out.println("***********************************");
    		  System.out.println("시도 횟수 초과 !! Game Over T^T");
    	      System.out.println("***********************************");

    		  return -1;
    	  }
    	  
    	  
    	  String input = input();
    	  
    	  System.out.println("===================================");
    	  System.out.println(cnt + "번째 시도" + "\t");
    	  System.out.println("===================================");

    	  System.out.println("내가 입력한 정답 : " + input);
    	  for(int i=0; i<input.length(); i++){
        	  userInput.add(input.charAt(i)-'0');
          }
	      for(int i=0; i<answer.size(); i++){
	         if(answer.contains(userInput.get(i))){
	        	 if(answer.get(i) == userInput.get(i)){
	    		  strike++;
	    		  continue;
	        	 }
	         ball ++;   
	         }
	      }
	      if(strike == 4){
	    	  System.out.println();
	    	  System.out.println("♬  정답입니다 :) ♬");
	    	  System.out.println();

	    	  return cnt;
	      }
	      System.out.println(ball + " Ball");
	      System.out.println(strike + " Strike");
	      ball = 0;
	      strike = 0;
	      cnt++;
	   }
   }

 

전체 코드는 아래 깃허브에 올려놓았으니 필요하신 분들은 확인하시면 됩니다.

github.com/dpwls64/baseballgame

 

dpwls64/baseballgame

Contribute to dpwls64/baseballgame development by creating an account on GitHub.

github.com

 

반응형

'코딩 기록 > JAVA' 카테고리의 다른 글

[JAVA] SVN LOCK 해제 방법  (0) 2022.05.09

+ Recent posts