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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package Extends;
 
class DeckTest {
    public static void main(String args[]) {
        Deck d = new Deck(); // 카드 한 벌(Deck)을 만든다.
        Card c = d.pick(0); // 섞기 전에 제일 위의 카드를 뽑는다.
        System.out.println(c);
        d.shuffle(); // 카드를 섞는다.
        c = d.pick(0); // 섞은 후에 제일 위의 카드를 뽑는다.
        System.out.println(c);
    }
 
}
 
// Deck클래스
class Deck {
    final int CARD_NUM = 52// 카드의 개수
    Card c[] = new Card[CARD_NUM];
 
    Deck() { // Deck의 카드를 초기화한다.
        int i = 0;
        for (int k = Card.KIND_MAX; k > 0; k--) {
            for (int n = 1; n < Card.NUM_MAX + 1; n++) {
                c[i++= new Card(k, n);
            }
        }
    }
 
    Card pick(int index) { // 지정된 위치(index)에 있는 카드 하나를 선택한다.
        return c[index % CARD_NUM];
    }
 
    Card pick() { // Deck에서 카드 하나를 선택한다.
        int index = (int) (Math.random() * CARD_NUM);
        return pick(index);
    }
 
    void shuffle() { // 카드의 순서를 섞는다.
        for (int n = 0; n < 1000; n++) {
            int i = (int) (Math.random() * CARD_NUM);
            Card temp = c[0]; // 첫 번째 카드와 임의로 선택된 카드를 서로 바꾼다.
            c[0= c[i];
            c[i] = temp;
        }
    }
}
 
// Card클래스
class Card {
    static final int KIND_MAX = 4// 카드 무늬의 수
    static final int NUM_MAX = 13// 무늬별 카드 수
    static final int SPADE = 4;
    static final int DIAMOND = 3;
    static final int HEART = 2;
    static final int CLOVER = 1;
    int kind;
    int number;
 
    Card() {
        this(SPADE, 1);
    }
 
    Card(int kind, int number) {
        this.kind = kind;
        this.number = number;
    }
 
    public String toString() {
        String kind = "";
        String number = "";
        switch (this.kind) {
            case 4:
                kind = "SPADE";
                break;
            case 3:
                kind = "DIAMOND";
                break;
            case 2:
 
                kind = "HEART";
                break;
            case 1:
                kind = "CLOVER";
                break;
            default:
        }
        switch (this.number) {
            case 13:
                number = "K";
                break;
            case 12:
                number = "Q";
                break;
            case 11:
                number = "J";
                break;
            default:
                number = this.number + "";
        }
        return "kind : " + kind + ", number : " + number;
    }
}
 
cs

'23.12.24 삭제예정 > 자바' 카테고리의 다른 글

리팩토링  (0) 2018.06.18
자바의 역사  (0) 2018.02.21
★★ 상속 extends에 관하여  (0) 2017.08.08
★★★변수의 초기화★★★  (0) 2017.08.07
★★this 생성자 개인적으로 연습해서 만든것  (0) 2017.08.07

+ Recent posts