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,ArrayList cards){ 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; } publicArrayList getCards(){ returncards; } publicvoidsetCards(ArrayList cards){ 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={"红桃","方块","梅花","黑桃"}; privateArrayList players=newArrayList (); static{ inti=0; for(;i sendCard(){ 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; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。