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
}
java编写扑克的洗牌程序
最新推荐文章于 2022-02-16 14:09:44 发布