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编写的扑克牌游戏不仅展示了编程基础,还涵盖了高级概念,如数据结构、面向对象设计、算法和多线程。通过参与这样的项目,开发者可以提升自己的编程技能并加深对Java语言的理解。如果你对这个游戏感...
在本文中,我们将深入探讨如何使用Java编程语言来模拟扑克牌的洗牌和发牌过程。这个过程涉及到了数组、随机数生成、以及基本的算法设计。首先,我们需要理解扑克牌的基本规则和结构。 扑克牌通常包含52张牌,分为四...
编写一个模拟人工洗牌的程序,将洗好的牌分别发给四个人。 使用结构card 来描述一张牌,用随机方法来模拟人工洗牌的过程,最后将洗好的52张牌顺序分别发给四个人。 设计要求: 1)要求使用java类包中的Math.Random()...
在这个小程序中,我们将探讨如何生成牌,随机洗牌,以及公平地发牌给三个玩家。 【描述】:“牌的生成、随机洗牌、发牌、输出显示” 1. **牌的生成**:在Java中,首先我们需要创建一个表示扑克牌的数据结构。这...
编写一个模拟人工洗牌的程序,将洗好的牌分别发给四个人。 使用结构card 来描述一张牌,用随机方法来模拟人工洗牌的过程,最后将洗好的52张牌顺序分别发给四个人。 设计要求: 1)要求使用java类包中的Math.Random()...
在本文中,我们将深入探讨如何使用Java编程语言来实现一个扑克牌程序,这涉及到扑克牌的构造、基本算法以及比较、搜索和排序等关键操作。首先,我们需要理解扑克牌的基本结构和规则,以便在代码中有效地模拟它们。 ...
3. **算法设计**:在扑克牌游戏中,算法设计至关重要,包括洗牌算法、发牌算法、判断胜败的规则等。例如,洗牌可以通过Fisher-Yates(Knuth)洗牌算法实现,确保随机性;发牌则需要考虑公平性和效率。 4. **事件...
编写一个模拟人工洗牌的程序,将洗好的牌分别发给四个人。 使用结构card 来描述一张牌,用随机方法来模拟人工洗牌的过程,最后将洗好的52张牌顺序分别发给四个人。 设计要求: 1)要求使用java类包中的Math.Random()...
以上就是利用Java模拟扑克牌洗牌生成52张牌的主要知识点,通过这个过程,读者可以学习到数组操作、集合操作、方法重载、泛型警告抑制等编程技巧,以及理解Java程序的组织结构和运行机制。更深入的Java编程知识和技巧...
在本项目中,我们主要关注的是“扑克牌图片 Java程序开发”,这涉及到计算机编程中的图形用户界面(GUI)设计以及Java语言的相关应用。这个项目的核心是利用Java来创建一个扑克牌游戏,其中包含了图片资源和相应的源...
编写一个模拟人工洗牌的程序,将洗好的牌分别发给四个人。 使用结构card 来描述一张牌,用随机方法来模拟人工洗牌的过程,最后将洗好的52张牌顺序分别发给四个人。 设计要求: 1)要求使用java类包中的Math.Random...
通过编写和理解这个Java洗牌程序,初学者不仅可以提升对Java编程的理解,还能学习到如何在实际开发中运用随机算法,以及如何通过单元测试保证代码质量。这个示例虽然简单,但却是一个将理论知识应用到实际编程实践中...
5. **算法与逻辑**:游戏规则的实现涉及一些算法,如洗牌算法(可以使用Fisher-Yates shuffle)、发牌算法、比较牌型的逻辑等。这些都需要清晰的思维和准确的代码实现。 6. **异常处理**:在编写程序时,要考虑到...
最后,我们编写主程序,创建一个牌堆栈,洗牌,然后将牌平均分给4个玩家: ```java public class Main { public static void main(String[] args) { PokerDeck deck = new PokerDeck(); deck.shuffle(); ...
本文将深入探讨一个基于Java实现的“扑克牌发牌洗牌系统”的相关知识点,帮助学习者巩固Java基础。 首先,我们来看扑克牌发牌洗牌系统的概述。在扑克游戏中,发牌和洗牌是两个关键步骤。发牌涉及到从一副扑克牌中...
在Python编程领域,开发一款基于图形用户界面(GUI)的扑克牌洗牌和发牌游戏是一种常见的练习,用于提升对面向对象编程、随机数生成以及图形库应用的理解。本项目中,我们关注的是使用tkinter模块来实现这个功能。...
【Java斗地主发牌程序】是一个典型的基于Java编程语言实现的桌面游戏应用,它主要用于模拟斗地主游戏中的发牌过程。在这个程序中,我们可以深入学习到Java的基础语法、面向对象编程思想以及随机数生成等核心概念。...
### Java洗牌发牌程序概述 这段代码实现了一个简单的洗牌发牌功能,使用Java语言编写。程序的目标是模拟扑克牌游戏中的洗牌和发牌过程。 ### 主要组件 #### 变量定义 1. **players**: 一个字符串数组,用于存储...