티스토리 뷰

[주제]

- 포커 카드를 섞은 후 뽑은 카드의 그림과 숫자를 알려주기

  ※ 그림을 알아내는 알고리즘과 숫자를 알려주는 알고리즘은 'method'로 만들기



[중요]

- 카드숫자를 구할 땐 처음에 배정된 순수 번호에서 13으로 나눈 나머지를 카드숫자로 정함

- '13, 26, 39, 52' 번 카드는 카드숫자를 구할 때 13으로 나눈 나머지가 0이 되므로 마지막 숫자인 13(K)로 강제 지정



[소스 코딩]

package trump;
 
class trump {
    public static void main(String[] args) {
/*
        [카드 뽑기 프로그램]
        - 랜덤으로 52개의 숫자를 생성  ※ 0 ~ 51
        - 카드 묶음에 넣고 그 중 무작위로 카드 1개를 뽑음
        - 뽑은 카드의 그림 종류를 확인
        - 뽑은 카드의 카드 숫자를 확인
        - 뽑은 카드의 그림과 숫자를 출력
        - method 1: 뽑은 카드의 그림을 알려줌  ※ ♠, ◆, ♥, ♣
        - method 2: 뽑은 카드의 번호를 알려줌  ※ 1 ~ 10, J, Q, K
        - 카드의 그림 및 번호
        └ 0 ~ 12 : ♠(스페이드)    1 ~ 10, J, Q, K
        └ 13 ~ 25: ◆(다이아몬드)    1 ~ 10, J, Q, K
        └ 26 ~ 38: ♥(하트)        1 ~ 10, J, Q, K
        └ 39 ~ 51: ♣(클로버)        1 ~ 10, J, Q, K
*/
 
        int randValue = 52;                         // 무작위로 지정되는 숫자의 범위 값  ※ 1 ~ 10
        int cardSet[] = new int[52];                // 무작위로 결정된 숫자를 저장
        int randTemp;                               // 무작위 숫자를 중복검사 전 임시로 저장
        boolean noSame[] = new boolean[randValue];  // 무작위 숫자 중복검사 대조
 
//      무작위 숫자 결정 시 중복 불가를 위한 준비
        for(int i=0; i < noSame.length ; i++) {
                noSame[i] = false;
        }
 
//      총 결정될 개수만큼 중복없는 숫자가 나올 때까지 무작위 결정을 반복
        int randLoop = 0;
        while(randLoop < randValue) {
            randTemp = (int)(Math.random() * randValue);
            if(noSame[randTemp] == false) {
                noSame[randTemp] = true;
                cardSet[randLoop] = randTemp + 1;
                randLoop++;
            }
        }
        
        for(int i=0; i < 52; i++) {
            System.out.println("cardSet[" + i + "] = " + cardSet[i]);
        }
 
        int drawCard = cardSet[(int)(Math.random() * randValue)];
 
//      @테스트: 카드 번호 지정
//      drawCard = 1;
 
//      @테스트: 뽑은 카드 번호 확인
        System.out.println("뽑은 카드는 카드 묶음의 " + drawCard + "번 카드");
 
//      카드의 이미지 체크
        String cardImg = checkImg(drawCard);
 
//      카드의 번호 체크
        String cardNum = checkNum(drawCard);
 
//      결과 출력
        System.out.println("뽑은 카드는 " + cardImg + " " + cardNum + "입니다.");    
    }
 
///// method 영역 /////
 
//  카드그림 종류 체크
    public static String checkImg(int drawCardNum){
        String cardImg;
 
        if(drawCardNum > 0 && drawCardNum < 14) {
            cardImg = "♠";
        }
        else if (drawCardNum > 13 && drawCardNum < 27) {
            cardImg = "◆";
        }
        else if (drawCardNum > 26 && drawCardNum < 40) {
            cardImg = "♥";
        }
        else {
            cardImg = "♣";
        }
        return cardImg;
    }
 
//    카드번호 체크 및 변환
    public static String checkNum(int cardNum) {
        String str = "";
 
//      실제 카드 숫자로 변환
        if(cardNum == 0) {
            cardNum = (cardNum % 13);
        }
        else if(cardNum % 13 == 0) {
            cardNum = 13;
        }
        else{
            cardNum = (cardNum % 13);
        }
 
//      카드 번호가 '11' 이상이면 알파벳으로 변경
        if (cardNum > 10) {
            switch(cardNum) {
                case 11:
                    str = "J";
                    break;
                case 12:
                    str = "Q";
                    break;
                case 13:
                    str = "K";
                    break;
            }
        }
        else {
            str = Integer.toString(cardNum);
        }
        
        return str;
    }
}
cs



■ 실행결과


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

sortMethod(메소드 연습)  (0) 2016.04.28
methodClass2(메소드 연습)  (0) 2016.04.28
method(함수, 메소드)  (0) 2016.04.27
야구 게임  (0) 2016.04.27
sorting(정렬)  (0) 2016.04.27
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함