斗地主实现洗牌发牌功能

 //定义两个数组,用来存放花色和牌号
        String[]color={"♠","♥","♣","♦"};
        String[]number={"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
        //创建一个Map集合,key代表1-54标号,值代表牌面:花色+牌号
        HashMap<Integer, String> map = new HashMap<>();
        //创建一个list集合用来单独存map集合中的key;
        ArrayList<Integer> list = new ArrayList<>();
        //遍历color和number,把牌存入map集合中
        int index=1;//设置index变量来代表map集合中的key;
        for(int i=0;i<color.length;i++){
            for(int j=0;j<number.length;j++){
                map.put(index,color[i]+number[j]);
                //把map集合中的key,存放到list集合中去
                list.add(index);
                index++;
            }
        }
        //把大王和小王放入map集合中
        map.put(index,"大王");
        map.put(index+1,"小王");
        //把大小王对应的标号存入list集合中
        Collections.addAll(list,index,index+1);

        //定义三个玩家
        ArrayList<String> player1 = new ArrayList<>();
        ArrayList<String> player2 = new ArrayList<>();
        ArrayList<String> player3 = new ArrayList<>();
        //定义一个集合存储底牌
        ArrayList<String> bottom = new ArrayList<>();



        //发牌方法1:
        for(int i=1;i<=list.size();i++){
        //每次发牌前先洗一次牌
        if(i==1){
            Collections.shuffle(list);
        }
        //获得打乱顺序后的标号
            Integer n = list.get(i - 1);
        //获得底牌
            if(i<=3){
               bottom.add(map.get(n));
            }
        //分别给三位玩家发牌
            else if(i%3==0){
                player1.add(map.get(n));
            }else if(i%3==1){
                player2.add(map.get(n));
            }else if(i%3==2){
                player3.add(map.get(n));
            }
        }
        //发牌方法2:
//        for(int i=1;i<=list.size();i++){
//            //每次发牌前先洗一次牌
//            if(i==1){
//                Collections.shuffle(list);
//            }
//            //获得打乱顺序后的标号
//            Integer n = list.get(i - 1);
//            //获得底牌
//            if(list.size()-i>=0&&list.size()-i<3){
//                bottom.add(map.get(n));
//            }
//            //分别给三位玩家发牌
//            else if(i%3==0){
//                player1.add(map.get(n));
//            }else if(i%3==1){
//                player2.add(map.get(n));
//            }else if(i%3==2){
//                player3.add(map.get(n));
//            }
//        }
//
        System.out.print("玩家1的牌是:");
        for(String s1:player1){
            System.out.print(s1+" ");
        }
        System.out.println();
        System.out.print("玩家2的牌是:");
        for(String s2:player2){
            System.out.print(s2+" ");
        }
        System.out.println();
        System.out.print("玩家3的牌是:");
        for(String s3:player3){
            System.out.print(s3+" ");
        }
        System.out.println();
        System.out.print("底牌是:");
        for(String s4:bottom){
            System.out.print(s4+" ");
        }

  

原文地址:https://www.cnblogs.com/Hubert-dzl/p/10896009.html