/*
* 请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit:
分别描述一张牌的牌面值(如:A、K、Q、J、10、9、…、3、2等)和花色(如:“黑桃”、“红桃”、“梅花”和“方块”)。
定义Card类中的public访问权限的构造方法,为类中的变量赋值;定义protected访问权限的方法getFace(),
得到扑克牌的牌面值; 定义protected访问权限的方法getSuit(),得到扑克牌的花色; 定义方法toString(),
返回表示扑克牌的花色和牌面值字符串(如“红桃A”、“梅花10”等)。
2.若应用程序的main方法中,定义字符串数组f和s: 分别表示扑克牌的牌面值和花色;
定义52个元素的Card类型数组deck,用来存放4个花色的52张牌。如下所示。
String f[] = { "A", "2", "3",
"4", "5", "6", "7", "8",
"9", "10", "J", "Q", "K" };
String s[] =
{ "黑桃", "红桃", "梅花", "方块" };
Card deck = new Card[ 52 ];
(1)使用Card类的构造方法给deck数组的52张牌赋值,要求数组中先存放黑桃花色的A、2、3、…、K;
然后是红桃花色的A、2、3、…、K;梅花花色的A、2、3、…、K;方块花色的A、2、3、…、K。请写出实现上述功能的程序段。
(2)请编写模拟洗牌的程序段,即把数组deck中的扑克牌随机打乱存放顺序。
*/
public class Test02 {
public static void main(String[] args) {
Poker poker = new Poker();
System.out.println("---------洗牌前-----------");
poker.show();
poker.shuffle();
System.out.println("---------洗牌后-----------");
poker.show();
}
}
class Poker {
String f[] = { "A", "2", "3",
"4", "5", "6", "7", "8",
"9", "10", "J", "Q", "K" };
String s[] = { "黑桃", "红桃", "梅花", "方块" };
Card[] deck = new Card[52];
public Poker() {
super();
for (int i = 1; i <= s.length; i++) {//
for (int j = 13 * i - 13; j < 13 * i; j++) {//13 * i - 13表示从0 - 13 - 26 - 39 13 * i是 13 - 26 ---52
deck[j] = new Card(s[i - 1], f[j - 13 * i + 13]);// j - 13 * i + 13表示打完第一行后下一行重新 0 开始
}
}
}
//打印
public void show() {
for (int i = 1; i <= deck.length; i++) {
if (i % 13 == 0) {
System.out.println(deck[i - 1]);
} else {
System.out.print(deck[i - 1] + " | ");
}
}
}
//洗牌
public void shuffle () {
Random ran = new Random();//调用 随机数
for (int i = 0; i < deck.length; i++) {
int num = ran.nextInt(52);//获取 0 - 51 的随机数
Card temp = null;//定义Card temp的数组 用来数组互换
temp = deck[i];
deck[i] = deck[num];//把随机的一个数组调换
deck[num] = temp;
}
}
}
class Card {
private String face;
private String suit;
public Card() {
}
public Card(String suit,String face) {
this.face = face;
this.suit = suit;
}
protected String getFace() {
return face;
}
protected void setFace(String face) {
this.face = face;
}
protected String getSuit() {
return suit;
}
protected void setSuit(String suit) {
this.suit = suit;
}
@Override
public String toString() {
return suit + face;
}
}
java扑克牌练习
最新推荐文章于 2021-02-28 02:03:16 发布