zoukankan      html  css  js  c++  java
  • 斗地主实现洗牌发牌功能

     //定义两个数组,用来存放花色和牌号
            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+" ");
            }
    

      

  • 相关阅读:
    JS函数调用的四种方法
    彻底弄懂css中单位px和em,rem的区别
    Image Transformation in WPF输入日志标题
    WPF DATAGRID
    WPF Datagrid multiple selecteditems in MVVM
    WPF ComboBox Binding
    Parameter of Revit API – 19: Add FamilyParameter (FamilyManager.AddParameter)
    The StringFormat property
    How to retrieve instance parameters from an uninstantiated (uninserted) family
    WPF – pass multiple parameters to a Command
  • 原文地址:https://www.cnblogs.com/Hubert-dzl/p/10896009.html
Copyright © 2011-2022 走看看