扑克牌java发牌_Java练习——扑克牌发牌器

本文介绍了一个Java实现的扑克牌发牌器,包括构建扑克牌、洗牌和发牌的功能。通过定义Card类表示单张扑克牌,Poker类用于存储和操作整副牌,实现了洗牌和按顺序发牌给多个玩家的功能。代码中详细注释了每一步操作,有助于理解和实践。
摘要由CSDN通过智能技术生成

Java练习——扑克牌发牌器

声明:学习自其他博主,感谢分享,这里自己也写了一下。

实现思路

- 构建一张扑克牌

- 构建一套扑克牌

- 测试

构建一张扑克牌

/***@author冬冬

* 定义一个单张扑克牌类

* 有花型,大小*/

public classCard {private String flower; //花型

private int daxiao; //点数

/**构造方法

*@paramflower

*@paramdaxiao*/

public Card(String flower, intdaxiao) {this.flower =flower;this.daxiao =daxiao;

}/*(non-Javadoc)

* @see java.lang.Object#toString()

* 获取本张卡牌的花型与大小,对于特殊的大小,如1——A,输出时进行转换*/

publicString toString() {

String daxiaoStr= "";switch(daxiao) {case 1: daxiaoStr = "A"; break;case 11: daxiaoStr = "J"; break;case 12: daxiaoStr = "Q"; break;case 13: daxiaoStr = "K"; break;default: daxiaoStr =String.valueOf(daxiao);

}return flower +daxiaoStr;

}

}

构建一套扑克牌

public classPoker {private static String[] flowers = {"黑桃", "红桃", "草花", "方块"};private static int[] daxiaos = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};private Card[] cards;//卡片数组,应该有54张,这里去掉大小王,只52张

/*** 构造器

* 按顺序实例化52张扑克牌*/

publicPoker() {

cards= new Card[52];for(int i = 0; i < flowers.length; i++) {for(int j = 0; j < daxiaos.length; j++) {

cards[i* 13 + j] = newCard(flowers[i], daxiaos[j]);

}

}

}/*** 洗牌 (随机乱序)

* 对于52个Card实例数组随机乱序排列*/

public voidshuffle() {for(int i = 0, len = cards.length; i < len; i++) {int index = (int) (Math.random() *len);

Card temp=cards[index];

cards[index]=cards[i];

cards[i]=temp;

}

}/*** 发牌

*@paramindex 发牌的位置

**/

public Card deal(intindex) {returncards[index];

}

}

测试

public classTest {public static voidmain(String[] args) {

Poker poker= new Poker();//生成扑克牌

poker.shuffle(); //洗牌(乱序)

Card c1 = poker.deal(0); //发第一张牌//创建四个玩家,每个玩家13张空牌

Card [] person1=new Card[13];

Card [] person2=new Card[13];

Card [] person3=new Card[13];

Card [] person4=new Card[13];//为玩家的的空牌赋值

for(int i=1;i<=52;i++)

{if(i<=13) person1[i-1]=poker.deal(i-1);if(i>13&&i<=26) person2[i-1-13]=poker.deal(i-1);if(i>26&&i<=39) person3[i-1-26]=poker.deal(i-1);if(i>39&&i<=52) person4[i-1-39]=poker.deal(i-1);

}//打印

System.out.println("玩家1");for(Card card : person1) {

System.out.print(card+" ");

}

System.out.println("");

System.out.println("玩家2");for(Card card : person2) {

System.out.print(card+" ");

}

System.out.println("");

System.out.println("玩家3");for(Card card : person3) {

System.out.print(card+" ");

}

System.out.println("");

System.out.println("玩家4");for(Card card : person4) {

System.out.print(card+" ");

}

}

}

结果:

玩家1

红桃6 方块4 方块A 黑桃4 草花2 红桃Q 红桃J 红桃K 方块3 黑桃K 方块8 黑桃7 黑桃5

玩家2

草花A 黑桃2 红桃7 草花3 草花5 方块J 方块9 草花9 草花K 黑桃8 草花J 黑桃10 红桃8

玩家3

方块7 红桃4 红桃2 草花6 方块2 黑桃Q 黑桃9 黑桃A 草花10 草花7 红桃10 红桃A 方块Q

玩家4

红桃9 方块5 草花8 方块10 方块K 草花Q 黑桃3 红桃5 黑桃6 黑桃J 红桃3 方块6 草花4

注意事项

1. 不要忘记在Poker类里导入Card类,在Test类里面导入Poker和Card;

2. 自己想想,动手做一做才能真正理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值