java实现斗地主发牌功能
本文实例为大家分享了java实现斗地主发牌的具体代码,供大家参考,具体内容如下
参考斗地主的游戏规则,完成一个发牌的功能(54张牌,考虑点数,花色;三名玩家,其中地主比其他玩家多3张牌)
代码如下:
牌类
importjava.util.Objects;
/**
*3-10JQKA2KingQueen牌类
*
*@authorAdministrator
*
*/
publicclassCard{
/**牌面值*/
privateStringname;
/**花色*/
privateStringflower;
/**大小点数*/
privateintnum;
publicCard(){
super();
}
publicCard(Stringname,Stringflower,intnum){
super();
this.name=name;
this.flower=flower;
this.num=num;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetFlower(){
returnflower;
}
publicvoidsetFlower(Stringflower){
this.flower=flower;
}
publicintgetNum(){
returnnum;
}
publicvoidsetNum(intnum){
this.num=num;
}
@Override
publicStringtoString(){
if(Objects.nonNull(flower)){
returnname+"-"+flower;
}
returnname;
}
}
玩家类
publicclassPlayer{
/**玩家ID*/
privateintid;
/**玩家姓名*/
privateStringname;
/**是否是地主*/
privatebooleanboss;
/**牌集合*/
privateArrayListcards=newArrayList();
publicPlayer(intid,Stringname,booleanboss,ArrayListcards){
super();
this.id=id;
this.name=name;
this.boss=boss;
this.cards=cards;
}
publicPlayer(){
super();
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicbooleanisBoss(){
returnboss;
}
publicvoidsetBoss(booleanboss){
this.boss=boss;
}
publicArrayListgetCards(){
returncards;
}
publicvoidsetCards(ArrayListcards){
this.cards=cards;
}
@Override
publicStringtoString(){
returnname+(boss?"(地主):":"(农名):")+cards;
}
}
管理类
publicclassGameManage{
privatestaticRandomrandomGen=newRandom();
/**声明所有牌的集合*/
privatestaticArrayListall=newArrayList();
/**用于生成牌的牌面值*/
privatestaticString[]names={"3","4","5","6","7","8","9","10","J","Q","K","A","2","小王","大王"};
/**用于生成牌的花色*/
privatestaticString[]flowers={"红桃","方块","梅花","黑桃"};
privateArrayListplayers=newArrayList();
static{
inti=0;
for(;isendCard(){
randomBoss();
//对每一名玩家遍历
for(Playerp:players){
//先为每一位玩家随机发17张牌
for(inti=0;i<17;i++){
//随机一张牌的索引
intcardIndex=randomGen.nextInt(all.size());
//获取随机索引位置的牌
Cardcard=all.get(cardIndex);
//将随机的牌加入当前遍历玩家的集合
p.getCards().add(card);
//从源集合中移除这张牌
all.remove(card);
}
}
//最后三张牌给地主
for(Playerp:players){
if(p.isBoss()){
//将all集合中的所有元素加入地主的集合
p.getCards().addAll(all);
}
}
returnplayers;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。