Java模拟实现斗地主的洗牌和发牌

这篇文章主要为大家详细介绍了Java模拟实现斗地主的洗牌和发牌,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java实现斗地主的洗牌和发牌的具体代码,供大家参考,具体内容如下

案例分析:

我们需要模拟斗地主过程中的洗牌、发牌和看牌。而且要求牌是排好序的。

1.每张扑克牌都有花色和点数,所以我们可以先把花色和点数存进两个字符串数组,然后再存进集合里,而因为我们后面涉及到对牌进行洗牌还有排序等等,所以我们选择TreeMap集合来存储,键是扑克牌的编号,值是扑克牌的花色和点数(把花色和点数拼接成一个字符串)。

2.洗牌洗的是编号,我们再用ArrayList集合来存储牌的编号,调用Collections集合工具类的shuffle()方法来进行洗牌操作。

3.发牌,我们发到每个人手里的牌是排好序的,所以我们选择TreeSet集合来接收牌。

4.看牌,我们写个lookPoker()方法就行了,这个方法通过TreeSet集合来获取每个人牌对应的编号,再去TreeMap集合中的找编号对应的扑克牌。

具体步骤:

1.创建一个TreeMap集合来存储扑克牌编号和扑克牌花色及点数
2.定义两个数组分别用来存储花色和点数
3.创建一个ArrayList集合来存储编号
4.往HashMap集合中存储编号以及对应的扑克牌,同时往ArrayList集合中存储编号
5.洗牌(洗的是编号)
6.发牌(发的也是编号,为了保证扑克牌排好序,创建TreeSet集合来接收)
7.看牌(遍历TreeSet集合,获取编号,到HashMap集合中找对应的牌)

具体代码实现如下:

package com.edu_01; import java.util.ArrayList; import java.util.Collections; import java.util.TreeMap; import java.util.TreeSet; public class Poker {     public static void main(String[] args) {         //1.创建一个TreeMap集合来存储扑克牌编号和扑克牌花色及点数         TreeMap pokers = new TreeMap();         //2.定义两个数组分别用来存储花色和点数         String[] colors={"♥","♠","♦","♣"};         String[] numbers={"3","4","5","6","7","8","9","10","J","O","K","A","2"};         //3.创建一个ArrayList集合来存储编号         ArrayList indexs = new ArrayList();         //4.往HashMap集合中存储编号以及对应的扑克牌,同时往ArrayList集合中存储编号         int index=0;         for (String number : numbers) {             for (String color : colors) {                 pokers.put(index,color+number);                 indexs.add(index);                 index++;             }         }         pokers.put(index,"小王");         indexs.add(index);         index++;         pokers.put(index,"大王");         indexs.add(index);         //5.洗牌(洗的是编号)         Collections.shuffle(indexs);         //6.发牌(发的也是编号,为了保证扑克牌排好序,创建TreeSet集合来接收)         TreeSet zhangsan = new TreeSet();         TreeSet lisi = new TreeSet();         TreeSet wangwu = new TreeSet();         TreeSet dipai = new TreeSet();         for (int i = 0; i =indexs.size()-3){                 dipai.add(indexs.get(i));             }else if(i%3==0){                 zhangsan.add(indexs.get(i));             }else if(i%3==1){                 lisi.add(indexs.get(i));             }else if(i%3==2){                 wangwu.add(indexs.get(i));             }         }         //7.看牌(遍历TreeSet集合,获取编号,到HashMap集合中找对应的牌)         lookPoker("张三",zhangsan,pokers);         lookPoker("李四",lisi,pokers);         lookPoker("王五",wangwu,pokers);         lookPoker("底牌",dipai,pokers);     }     private static void lookPoker(String name, TreeSet indexs,             TreeMap pokers) {         System.out.print(name+"的牌为:");         for (Integer index : indexs) {             System.out.print(pokers.get(index)+"  ");         }         System.out.println();     } }

运行结果:

注意:因为我的花色是用了”♥”,”♠”,”♦”,”♣”这这几个符号,所以保存程序的时候一定要选择Save as UTF-8,不能选择OK,否则会出现乱码。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持0133技术站。

以上就是Java模拟实现斗地主的洗牌和发牌的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java