관리 메뉴

nalaolla

야구게임(4자리수 고정) 본문

자작프로그램

야구게임(4자리수 고정)

날아올라↗↗ 2015. 12. 2. 00:15
728x90
  1. package test.com;
  2.  
  3. import java.util.HashSet;
  4. import java.util.Random;
  5. import java.util.Scanner;
  6.  
  7. public class BaseBallGame {
  8.  
  9.    
  10.     public static String[] ballNum; //랜덤생성된 야구번호
  11.     public static int checkcnt;  //도전한 횟수
  12.    
  13.     public static void main(String[] args) {
  14.  
  15.         System.out.println("[4자리수 야구게임]");
  16.        
  17.         HashSet<Integer> ballNumber = new HashSet<>();
  18.        
  19.         final int ballLength = 4;      //야구게임 자리수 고정
  20.         Random rdm = new Random();
  21.         for (int i = 0; i < ballLength; i++) {
  22.            
  23.             while(ballNumber.size() < ballLength) {
  24.                 ballNumber.add(rdm.nextInt(10));
  25.             }
  26.         }
  27.        
  28.         ballNum = new String[ballLength];   //배열갯수 초기화
  29.        
  30.         int i = 0;
  31.         for (Integer x : ballNumber) {
  32.             ballNum[i] = String.valueOf(x)//배열위치에 값 초기화
  33.             i++;
  34.         }
  35.        
  36.         Scanner sc = new Scanner(System.in);    //사용자 입력
  37.        
  38.         boolean miss_match = true;  //사용자입력이 "아웃"될때까지 계속실행
  39.        
  40.         Valid valid = new Valid();  //
  41.        
  42.         while(miss_match) {
  43.             System.out.print(ballLength+"자리 번호을 입력하세요 : ");
  44.             String inputNum = sc.nextLine();
  45.            
  46.             if(inputNum.length() != ballLength) continue;   //자리수오류일 경우 continue;, try~catch는 추후에..
  47.            
  48.             String result = valid.result_count(inputNum);   //결과값 반환
  49.            
  50.             if(result.equals("아웃")) {
  51.                 break;
  52.             } else {
  53.                 System.out.println(result);
  54.             }
  55.         }
  56.        
  57.         System.out.println("축하 ^^ " + checkcnt + "번만에 맞추셨네요");
  58.        
  59.     }
  60.    
  61. }
  62.  
  63. class Valid {
  64.    
  65.     public String result_count(String inputNum) {
  66.             BaseBallGame.checkcnt++;
  67.             String[] compare = new String[4];
  68.             compare[0] = String.valueOf(inputNum.charAt(0));
  69.             compare[1] = String.valueOf(inputNum.charAt(1));
  70.             compare[2] = String.valueOf(inputNum.charAt(2));
  71.             compare[3] = String.valueOf(inputNum.charAt(3));
  72.             String[] ballNum = BaseBallGame.ballNum;
  73.            
  74.             int strike = 0, ball = 0;
  75. //      System.out.print("정답 : ");
  76. //      for (String x : ballNum) {
  77. //        System.out.print(x);
  78. //      }
  79. //      System.out.println();
  80.            
  81.             //생성번호값과 입력번호값 비교 -- 한번에 입력받기 때문에 integer로 입력받을경우 첫째자리수가 0일경우 오류발생
  82.             for (int i = 0; i < compare.length; i++) {
  83.                 for (int j = 0; j < ballNum.length; j++) {
  84.                     if(compare[i].equals(ballNum[j]) && i == j ) {
  85.                         strike++;
  86.                     } else if(compare[i].equals(ballNum[j]) && i != j) {
  87.                         ball++;
  88.                     }
  89.                 }
  90.             }
  91.            
  92.             String result_msg = "";
  93.             if(strike == 4) {
  94.                 result_msg = "아웃";
  95.             } else {
  96.                 result_msg = strike + "스트라이크, "+ball+"볼";
  97.             }
  98.            
  99.         return result_msg;
  100.     }
  101.        
  102. }




==================================================================

간단한 야구게임 만들기



1. 4자리수 고정으로 야구게임에 대한 static변수 설정

2. HashSet으로 중복된 번호를 제거한 4자리수 설정

3. 입력번호 및 생성번호의 경우 int로 변수설정할 경우 0값이 누락되므로 String변수로 선언

4. 입력번호와 생성번호 비교

   1) 해당 입력번호가 생성번호에 있는지 확인

   2) 입력번호와 생성번호가 동일 배열 위치에 있는지 확인

   3) 번호있고 동일위치면 strike값 증가

   4) 번호있고 상이위치면 ball값 증가

5. 4strike일 경우 "아웃" 리턴

   1) 아웃일경우 while문 빠져나감

728x90