练习:扑克牌小程序

一、Collections

今天呢学习了Collectins这个类,听起来是不是和Collection这个集合有点像呢?Collections是一个针对集合操作的一个工具类,可以对集合进行二分查找和排序,而Collection是单列集合的顶层接口,有子接口List和Set。

二、小练习

需求:模拟扑克牌游戏,写出代码实现随机发放扑克牌并排序输出
分析:
A创建HashMap集合存储扑克牌号以及扑克牌
B创建ArrayList集合存储扑克牌号
C创建扑克牌花色和点数数组
D将扑克牌号以及扑克牌放入HashMap集合中,并把扑克牌号放入ArrayList集合中
E洗牌(按照扑克牌号洗牌)
F发牌(按照扑克牌号发牌)
G看牌
实现:

public class pockGame {
    public static void main(String[] args) {
        //创建一个HashMap集合
        HashMap<Integer,String> hm=new HashMap<Integer, String>();
        //创建一个ArrayList集合来存放扑克牌编号
        ArrayList<Integer> arr=new ArrayList<Integer>();
        //创建数组存放花色和点数
        String[] colors={"♣","♠","♥","□"};
        String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        //从0开始往HashMap里存放编号,并存放对应的牌,同时往ArrayList里面存放编号
        int index=0;//定义一个编号初始值
        for(String number: numbers){//获取扑克点数
            for(String color: colors){//获取扑克颜色
                String poker=color.concat(number);//将扑克颜色与点数连接起来
                hm.put(index,poker);//把扑克牌存放到HashMap集合中
                arr.add(index);//把扑克牌编号存放到ArrayList集合中
                index++;//每存放一个扑克牌HashMap的键增加1
            }
        }
        //接下来把大小王存放到HashMap集合中,并把扑克牌的编号放入ArrayList集合中
        hm.put(index, "小王");
        arr.add(index);
        index++;
        hm.put(index, "大王");
        arr.add(index);
        
        //洗牌,洗的是扑克牌编号
        Collections.shuffle(arr);
        
        //发牌,TreeSet集合保证了编号有序
        TreeSet<Integer> dizhu=new TreeSet<Integer>();
        TreeSet<Integer> zhoubapi=new TreeSet<Integer>();
        TreeSet<Integer> nongmin=new TreeSet<Integer>();
        TreeSet<Integer> dipai=new TreeSet<Integer>();  
        
        for(int x=0;x<arr.size();x++){
            if(x>=arr.size()-3){
                dipai.add(arr.get(x));
            }else if(x%3==0){
                dizhu.add(arr.get(x));
            }
            else if(x%3==1){
                    zhoubapi.add(arr.get(x));    
            }else if(x%3==2){
                 nongmin.add(arr.get(x));
            }
        } 
        //看牌
        lookPoker("地主", dizhu, hm);
        lookPoker("周扒皮", zhoubapi, hm);
        lookPoker("农民", nongmin, hm);
        lookPoker("底牌", dipai, hm);
        
    }
    
    //实现看牌的功能,这里的name是玩家和底牌,ts是扑克牌的编号,hm用来获取扑克牌
    public static void lookPoker(String name, TreeSet<Integer> ts, HashMap<Integer,String> hm){
        
        System.out.println(name+"的牌是:");
        for(Integer key:ts){//增强for实现扑克牌编号(键)的遍历
            String value= hm.get(key);//通过扑克牌(键)获取扑克牌(值)
            System.out.print(value +" ");//打印出获取的扑克牌(值)
        }
        System.out.println();
    }
}

三、总结

上面的小练习运用了HashMap集合、ArrayList集合、普通数组、Collections类,其中Collections类的随机置换方法Collections.shuffle()是今天新学习的内容,这个方法主要就是用于体现随机性。通过这个小练习对最近学的东西进行一个总结归纳,以后也要经常复习才行啊!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值