斗地主发牌

斗地主发牌

普遍看见于微信小程序上面各种各样的斗地主,我这里展示无序发牌与未排序的三个玩家的牌


/*** 斗地主发牌* 按照斗地主的规则,完成洗牌发牌的动作。* 具体规则:* 使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。*/

代码

我们在静态时准备一个牌盒

 //准备牌盒static ArrayList list=new ArrayList<>();

然后准备54张牌,将其放入盒中,这里牌前面的小符号可以在网上找自己喜欢的或者直接输入法自带,这里主要就是牌的花色与牌的号数相匹配,变成四个红桃,黑桃,方块,爱心

static {String[] colorArr={"♠","♥","♣","♦"};String[] numberArr={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};for(String number:numberArr) {for (String color : colorArr) {list.add(color + number);}}list.add("joker");list.add("JOKER");}

然后进行洗牌和发牌

 public static void main(String[] args) {//洗牌System.out.println("未洗牌:"+list);Collections.shuffle(list);System.out.println("洗牌后:"+list);ArrayList DiPai=new ArrayList<>();ArrayList AA=new ArrayList<>();ArrayList BB=new ArrayList<>();ArrayList CC=new ArrayList<>();for (int i = 0; i 

在这里想象准备四个盒子(底牌盒子和分别三个玩家盒子),随机三张给底牌,剩下的牌按照按照51的三种分法分给三个不同玩家,这样也保证了三个不同玩家得到的牌是公正的

结果展示

未洗牌:[♠3, ♥3, ♣3, ♦3, ♠4, ♥4, ♣4, ♦4, ♠5, ♥5, ♣5, ♦5, ♠6, ♥6, ♣6, ♦6, ♠7, ♥7, ♣7, ♦7, ♠8, ♥8, ♣8, ♦8, ♠9, ♥9, ♣9, ♦9, ♠10, ♥10, ♣10, ♦10, ♠J, ♥J, ♣J, ♦J, ♠Q, ♥Q, ♣Q, ♦Q, ♠K, ♥K, ♣K, ♦K, ♠A, ♥A, ♣A, ♦A, ♠2, ♥2, ♣2, ♦2, joker, JOKER]
洗牌后:[♣10, ♣A, JOKER, ♥5, ♠J, ♠10, ♦5, ♥4, ♣9, ♥Q, ♦A, ♦9, ♠5, ♦6, ♠2, ♥3, ♦8, ♥A, ♥2, ♠6, ♥8, ♥K, ♦4, ♦Q, ♠4, ♣3, ♦K, ♥10, ♥9, ♣6, ♠K, ♣8, ♦7, ♠A, ♣K, ♦J, joker, ♠8, ♦2, ♠9, ♥J, ♥7, ♣7, ♣J, ♠Q, ♣5, ♣4, ♦3, ♥6, ♣2, ♠7, ♠3, ♦10, ♣Q]
底牌为:[JOKER, ♣10, ♣A]
石原里美:[joker, ♠3, ♠4, ♠5, ♠9, ♠A, ♠K, ♣5, ♣7, ♥10, ♥2, ♥3, ♥5, ♥6, ♥K, ♥Q, ♦5]
长泽雅美:[♠6, ♠8, ♠J, ♣2, ♣3, ♣4, ♣8, ♣J, ♣K, ♥4, ♥9, ♥J, ♦10, ♦4, ♦6, ♦8, ♦A]
桥本环奈:[♠10, ♠2, ♠7, ♠Q, ♣6, ♣9, ♣Q, ♥7, ♥8, ♥A, ♦2, ♦3, ♦7, ♦9, ♦J, ♦K, ♦Q]

如果嫌弃这是使用ArrayList集合是实现的无序发牌,

可以去尝试一下hashmap,ArrayList,TreeSet集合实现的有序发牌

public class test07Collections {//准备牌盒static HashMap hashmap=new HashMap();static  ArrayList list=new ArrayList<>();//准备牌 4*13+2=54static {int index=0;String[] colorArr={"♠","♥","♣","♦"};String[] numberArr={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};for(String number:numberArr) {for (String color : colorArr) {String poker=color+number;hashmap.put(index,poker);//将每张牌对应的编号存储在hashmap集合的键中list.add(index);//将每张牌的编号同样存储在arraylist集合中index++;//每存储一张牌,编号加1}}hashmap.put(index,"JOKER");list.add(index);index++;//编号加1hashmap.put(index,"joker");list.add(index);}
 public static void main(String[] args) {//洗牌Collections.shuffle(list);TreeSet AA = new TreeSet();//玩家1TreeSet BB = new TreeSet();//玩家2TreeSet CC = new TreeSet();//玩家3TreeSet DiPai = new TreeSet();//底牌for (int i = 0; i < list.size(); i++) {if (i <= 2) {DiPai.add(list.get(i));continue;}if (i % 3 == 0) {AA.add(list.get(i));} else if (i % 3 == 1) {BB.add(list.get(i));} else {CC.add(list.get(i));}}

 总结

斗地主发牌java有很多写法,就看你这样简单明了的写出一个好的程序,我这个都有点繁琐,感觉不怎么好看,希望我这个对您写斗地主发牌有点参照


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部