集合(模拟斗地主发牌)

集合(模拟斗地主发牌)

思路:
* A:创建一个HashMap集合
* B:创建一个ArrayList集合
* C:创建花色数组和点数数组
* D:从0开始往HashMap里面存储编号,并存储对应的牌
* 同时往ArrayList里面存储编号即可。
* E:洗牌(洗的是编号)
* F:发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
* G:看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)

输出牌—无序版

package Day18;

import java.util.ArrayList;
import java.util.Collections;

public class PoKe {
    public static void main(String[] args) {
        //创建牌盒---集合
        ArrayList<String> array = new ArrayList<String>();

        //装牌

        //定义一个花色数组
        String [] colors = {"♠","♣","♥","♦"};
        //定义一个点数的数组
        String [] number = {"A","2","3","4","5","6","7","8","9","J","Q","K"};
        //将牌装入集合array中
        //增强for进行循环遍历获取花色字符数组中的每个花色
        for(String a : colors){
            //遍历点数字符数组获取每个点数
            for(String b:number){
                //对获取的每个花色和点数进行字符的拼接---并将其添加到集合array中
                //字符拼接使用String类中的public String concat(String str)将指定字符串连接到此字符串的结尾。
                array.add(a.concat(b));
            }
        }
        array.add("小王");
        array.add("大王");
        //输出查看字符中的集合---是否添加上元素
        //System.out.println(array);
//        for(String t: array){
//            System.out.println(t);
//        }

        //洗牌
        //使用Collections中任意置换的方法实现其集合元素的混乱
        //public static void shuffle(List<?> list)使用默认随机源对指定列表进行置换。
        // 所有置换发生的可能性都是大致相等的。
        Collections.shuffle(array);
        //输出查看集合是否混乱
        //System.out.println(array);


        //看牌
        //斗地主三人打牌
        //首先创建三个集合用来存储每个人的牌---还有一个集合存储最后三张底牌
        ArrayList<String> zhao = new ArrayList<String>();
        ArrayList<String> zhu = new ArrayList<String>();
        ArrayList<String> wang = new ArrayList<String>();
        ArrayList<String> dipai = new ArrayList<String>();

        //进行分发牌
        //首先遍历array集合
        for(int x=0;x<array.size();x++){
            //进行底牌的判断---只留最后三张---放在遍历循环的开始,以防添加到别的集合
            if(x>= array.size()-3){
                //添加最后三张底牌
                dipai.add(array.get(x));
            }
            //进行顺序发牌
            if(x%3==0){
                //三人发牌---这是第一个拿牌的
                //如果遍历的array集合的索引的取余是零--就将此处array的索引值添加到zhao集合中
                zhao.add(array.get(x));
            }else if(x%3==1){
                //三人发牌--这是第二个拿牌的
                zhu.add(array.get(x));
            }else if(x%3==2){
                //三人发牌--这是第三个拿牌的
                wang.add(array.get(x));
            }
        }

        //查看牌---此时的查看牌定义一个功能方法--查看任意一个调用功能方法即可
        kanpai("赵同刚",zhao);
        kanpai("朱庆娜",zhu);
        kanpai("王丽丽",wang);
        kanpai("底牌",dipai);
    }

    //两个明确
    //返回值类型----void(任意型)  参数列表--A:给出拿牌人的姓名--B:给出拿牌的集合
    public static void kanpai(String name,ArrayList<String> m){
        //进行格式的调整
        System.out.print(name+":");
        //遍历输出集合中的每一个元素
        for (String e : m){
            System.out.print(e+",");
        }
        //每个人的牌在输出时进行换行,以方便查看
        System.out.println();

    }




}
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 集合(模拟斗地主发牌)