A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

模拟斗地主洗牌和发牌并对牌进行排序
A:案例演示
模拟斗地主洗牌和发牌并对牌进行排序的代码实现
    //买一副牌
    String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
    String[] color = {"方片","梅花","红桃","黑桃"};
    HashMap<Integer, String> hm = new HashMap<>();          //存储索引和扑克牌
    ArrayList<Integer> list = new ArrayList<>();            //存储索引
    int index = 0;                                          //索引的开始值
    for(String s1 : num) {
        for(String s2 : color) {
            hm.put(index, s2.concat(s1));                   //将索引和扑克牌添加到HashMap中
            list.add(index);                                //将索引添加到ArrayList集合中
            index++;
        }
    }
    hm.put(index, "小王");
    list.add(index);
    index++;
    hm.put(index, "大王");
    list.add(index);
    //洗牌
    Collections.shuffle(list);
    //发牌
    TreeSet<Integer> gaojin = new TreeSet<>();
    TreeSet<Integer> longwu = new TreeSet<>();
    TreeSet<Integer> me = new TreeSet<>();
    TreeSet<Integer> dipai = new TreeSet<>();

    for(int i = 0; i < list.size(); i++) {
        if(i >= list.size() - 3) {
            dipai.add(list.get(i));                         //将list集合中的索引添加到TreeSet集合中会自动排序
        }else if(i % 3 == 0) {
            gaojin.add(list.get(i));
        }else if(i % 3 == 1) {
            longwu.add(list.get(i));
        }else {
            me.add(list.get(i));
        }
    }

    //看牌
    lookPoker("高进", gaojin, hm);
    lookPoker("龙五", longwu, hm);
    lookPoker("冯佳", me, hm);
    lookPoker("底牌", dipai, hm);

}

public static void lookPoker(String name,TreeSet<Integer> ts,HashMap<Integer, String> hm) {
    System.out.print(name + "的牌是:");
    for (Integer index : ts) {
        System.out.print(hm.get(index) + " ");
    }

    System.out.println();
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马