1
package com.web;
2
3
public class Card {
4
5
private String face; // A, K, Q, J, 10,
2
6
private String suit; // Spade, Heart, Club, Diamond
7
8
public Card(){
9
10
}
11
12
//定義一個構造函數用于初始化點數2~A的牌
13
public Card(String suit, String face) {
14
this.face = face;
15
this.suit = suit;
16
}
17
18
//定義一個構造函數用于初始化大王和小王
19
public Card(String suit){
20
this.face = ""; //如果不給face賦值的話,洗牌和切牌后的大小王前面會顯示“null”
21
this.suit = suit;
22
}
23
24
protected String getFace() {
25
return face;
26
}
27
28
protected String getSuit() {
29
return suit;
30
}
31
32
public String toString() {
33
return suit + " " + face;
34
}
35
36
public static void shuffle(Card[] deck, int startIndex, int size, int splitIndex) {
37
if (splitIndex * 2 > size) {
38
Card.swap(deck, startIndex, splitIndex, size - splitIndex);
39
shuffle(deck, size - splitIndex, splitIndex, size - splitIndex);
40
} else if (splitIndex * 2 < size) {
41
Card.swap(deck, startIndex, size - splitIndex, splitIndex);
42
shuffle(deck, startIndex, size - splitIndex, splitIndex);
43
} else {
44
Card.swap(deck, startIndex, splitIndex, splitIndex);
45
}
46
47
}
48
49
public static void swap(Card[] deck, int srcIndex, int dstIndex, int size) {
50
String face = "";
51
String suit = "";
52
for (int i = 0; i < size; i++) {
53
face = deck[srcIndex + i].face;
54
suit = deck[srcIndex + i].suit;
55
deck[srcIndex + i].face = deck[dstIndex + i].face;
56
deck[srcIndex + i].suit = deck[dstIndex + i].suit;
57
deck[dstIndex + i].face = face;
58
deck[dstIndex + i].suit = suit;
59
}
60
}
61
62
public static void main(String[] args){
63
Card[] deck = new Card[54];
64
String f[] = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
65
// String s[] = {"Spade","Heart","Club","Diamond"};
66
String s[] = { "黑桃", "紅桃", "梅花", "方塊" };
67
for (int i = 0; i < s.length; i++) {
68
for (int j = 0; j < f.length; j++) {
69
deck[i * 13 + j] = new Card(s[i], f[j]);
70
}
71
deck[52] = new Card("小王");
72
deck[53] = new Card("大王");
73
}
74
int rnd = 0;
75
int numOfShuffle = 10;
76
for (int i = 0; i < numOfShuffle; i++) {
77
rnd = (int) Math.abs(Math.random() * 52);
78
Card.shuffle(deck, 0, deck.length, rnd);
79
}
80
// Test
81
for (int i = 0; i < deck.length; i++) {
82
System.out.println(deck[i]);
83
}
84
}
85
}
86

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
