集合模拟斗地主洗牌,发牌,看牌

1.一副牌54张,A-K13张,乘以四花色,加大小王
2.54张牌有大小,我们就用数字0-53表示大小,一个数字对应一个牌,所以我们就用Map集合来装牌。
3.洗牌:就是将牌对应的数字的集合打乱,所以我们就新建一个集合专门用来装牌对应的数字,用集合ArrayList。
4.发牌:就是将54张牌对应的数字除下3张底牌,平均分配给3位玩家,最好还可以排序,所以我们创建4个TreeSet分别来装玩家的牌和底牌。
5.看牌:定义一个方法参数是整副牌的集合,该玩家的姓名,玩家的TreeSet集合。

public class Demo1 {
    public static void main(String[] args) {
        //首先要生成一副牌
        //牌面大小从小到大
        char[] num={'3','4','5','6','7','8','9','d','J','Q','K','A','2'};
        //花色从小到大
        String [] flower={"方块", "梅花","红桃","黑桃"};
        //整副牌的集合
            HashMap puker = new HashMap<>();
        //牌对应的数字(key)的集合
            ArrayList list = new ArrayList<>();
                int index=0;
                for (char s2 : num) {
                    for (String s1 : flower) {
                    puker.put(index, s1+s2);
                    list.add(index);
                    index++;
                }
            }
            //添加大小王
            puker.put(index, "小王");
            list.add(index);
            index++;
            puker.put(index, "大王");
            list.add(index);
            //洗牌,就是将索引打乱
            Collections.shuffle(list);
            //发牌,创建4个Set集合来装牌,还有排序,就用treeSet
            TreeSet dushen = new TreeSet();
            TreeSet duba = new TreeSet();
            TreeSet duwang = new TreeSet();
            TreeSet dipai = new TreeSet();

            for (int i = 0; i < list.size(); i++) {
                if(i>=list.size()-3){
                    dipai.add(list.get(i));
                }else if(i%3==0){
                    dushen.add(list.get(i));                
                }else if(i%3==1){
                    duba.add(list.get(i));
                }else{
                    duwang.add(list.get(i));
                }
            }
            //看牌
            lookPuker(puker,dipai,"底牌");
            lookPuker(puker,dushen,"赌神");
            lookPuker(puker,duba,"赌霸");
            lookPuker(puker,duwang,"赌王");       
    }
    public static void lookPuker(HashMap puker,TreeSet set,String name){
    //通过拿到key拿到value
        System.out.print(name+"的牌是:");
        for (Integer i : set) {
            System.out.print(puker.get(i)+" ");
        }
        System.out.println();

    }
}

你可能感兴趣的:(web基础)