티스토리 뷰

[주제]

- 추억의 야구 게임 만들기



[중요]

- 'strike' 판단 시 숫자가 같아야 한다는 것과 위치(배열 인덱스)도 동일해야 함



[소스 코딩]

package baseballGame;
 
import java.util.Scanner;
 
class baseballGame {
    public static void main(String[] args) {
/*
        [야구 게임]
        1. 1 ~ 10 숫자 중 랜덤으로 3개 결정
        2. 사용자는 숫자 3개 입력
        3. 랜덤 숫자는 중복 불가
           ※ 사용자 입력 값은 중복될 수 있으나, 중복하여 입력하지 않는다는 것을 가정
*/
        Scanner scan = new Scanner(System.in);
 
        int randValue = 10;                           // 무작위로 지정되는 숫자의 범위 값  ※ 1 ~ 10
        int randNum[] = new int[3];                   // 무작위로 결정된 숫자를 저장
        int userNum[] = new int[3];                 // 사용자가 입력한 숫자를 저장
        int randTemp;                                 // 무작위 숫자를 중복검사 전 임시로 저장
        int countS = 0, countB = 0;                   // 스트라이크 횟수, 볼 횟수
        boolean noSame[] = new boolean[randValue];    // 무작위 숫자 중복검사 대조
        boolean clear = false;                        // 게임 승리 판단
        String reGame;                                // 게임 재시작 판단
 
//      @테스트: 무작위 값 강제 입력
//      int randNum[] = {1, 2, 3};
 
        int gameLoop = 0;
        int countPlay = 10;
        while(gameLoop < countPlay) {
 
//          게임 시작 셋팅
            if (gameLoop == 0) {
 
//              무작위 숫자 결정 시 중복 불가를 위한 준비
                for(int i=0; i < noSame.length ; i++) {
                        noSame[i] = false;
                }
 
//              총 결정될 개수만큼 중복없는 숫자가 나올 때까지 무작위 결정을 반복
                int randLoop = 0;
                while(randLoop < 3)    {
                    randTemp = (int)(Math.random() * randValue);
                    if(noSame[randTemp] == false) {
                        noSame[randTemp] = true;
                        randNum[randLoop] = randTemp + 1;
                        randLoop++;
                    }
                }
 
//              @테스트: 중복없이 무작위로 결정된 숫자 확인
                for(int i=0; i < 3; i++) {
                System.out.println("randNum[" + i + "] = " + randNum[i]);
                }
            }
 
//          사용자에게 숫자 입력받기
            System.out.println("[숫자 3개를 입력해주세요]");
            for(int i=0; i < 3; i++) {
                System.out.print((i + 1+ "번째 숫자 입력 = ");
                userNum[i] = scan.nextInt();
            }
 
//          사용자 입력 값과 무작위 결정 값과 비교
            for (int i=0; i < 3; i++) {
                for(int j=0; j < 3; j++) {
                    if(userNum[i] == randNum[j] && i == j) {
                        countS++;
                    }
                    else if (userNum[i] == randNum[j] && i != j) {
                        countB++;
                    }
                }
            }
 
            if(countS == 3) {
                clear = true;
            }
 
//          결과(정답) 출력
            if (clear) {
                System.out.println();
                System.out.println(countS + " strike! " + countB + " ball~");
                System.out.println("삼진 아웃! 성공!!");
                break;
            }
            System.out.println(countS + " strike! " + countB + " ball~");
            System.out.println();
            countS = countB = 0;
            gameLoop++;
 
//          결과(게임오버) 출력
            if(gameLoop == countPlay) {
                System.out.println("GameOver!!");
                System.out.println();
                System.out.println("게임을 새로 시작하겠습니까?(y/n): ");
                reGame = scan.next();
                if (reGame.equals("n"|| reGame.equals("N")) {
                    break;
                }
                gameLoop = 0;
            }
        }
        scan.close();
    }
}
cs



■ 실행결과


'프로그래밍 언어 > Java(연습)' 카테고리의 다른 글

trump(카드 뽑기)  (0) 2016.04.27
method(함수, 메소드)  (0) 2016.04.27
sorting(정렬)  (0) 2016.04.27
로또 번호 추첨 프로그램  (0) 2016.04.26
cast(형변환)  (0) 2016.04.26
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함