利用集合模拟斗地主(2)

思路:
1)创建HashMap集合
创建ArrayList集合,来存储编号
2)装牌:给HashMap中添加编号,以及对应的牌(点色数组和花色数组遍历之后的拼接),同时将编号添加ArrayList集合中
3)洗牌:洗的是编号
4)发牌:(发的也是编号,为了保证牌是有序的,所有应该用TreeSet集合)
5)看牌:(遍历TreeSet集合获取到对应的编号,拿对应的编号在HashMap中找编号对应的牌)
代码 :
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;

public class PokerDemo2 {
    public static void main(String[] args) {
        //创建HashMap集合
        HashMap<Integer, String> hm = new HashMap<Integer, String>();

        //创建ArrayList集合
        ArrayList<Integer> array = new ArrayList<Integer>();
        /*2)装牌
         * 给HashMap中添加编号,以及对应的牌(点色数组和花色数组遍历之后的拼接),同时
         * 将编号添加ArrayList集合中*/
        //创建花色数组
        String[] colors = {"♠","♥","♣","♦"};
        String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        //给牌进行编号:从0开始
        int index = 0;
        for(String number : numbers){
            for(String color : colors){
                String poker = color.concat(number);
                hm.put(index, poker);
                array.add(index);
                index++;
            }
        }
        //添加其他元素
        hm.put(index, "小王");
        array.add(index);
        index++;
        hm.put(index, "大王");
        array.add(index);
        //洗牌
                //对集合操作的数组工具类
                Collections.shuffle(array);

                //4)发牌:(发的也是编号,为了保证牌是有序的,所有应该用TreeSet<Integer>集合)
                TreeSet<Integer> player1 = new TreeSet<Integer>();
                TreeSet<Integer> player2 = new TreeSet<Integer>();
                TreeSet<Integer> player3 = new TreeSet<Integer>();
                TreeSet<Integer> diPai = new TreeSet<Integer>();

                //for循环变量
                for(int x = 0 ; x < array.size() ; x ++){
                    if(x>= array.size() -3){
                        diPai.add(array.get(x)) ;
                    }else if(x % 3 == 0){
                        player1.add(array.get(x)) ;
                    }else if(x % 3 ==1){
                        player2.add(array.get(x)) ;
                    }else if(x % 3 ==2){
                        player3.add(array.get(x)) ;
                    }
                }


//              5)看牌(遍历TreeSet集合获取到对应的编号,拿对应的编号在HashMap中找编号对应的牌)    
                lookPoker("玩家1", player1, hm);
                lookPoker("玩家2", player2, hm);
                lookPoker("玩家3", player3, hm);
                lookPoker("底牌", diPai, hm);
            }   

            public static void lookPoker(String name,TreeSet<Integer> ts,
                        HashMap<Integer, String> hm){
                System.out.print(name+"的牌是:");
                //遍历TreeSet集合获取里面的编号
                for(Integer key : ts){
                    //获取到了所有的编号,通过大集合的对象通过get(k),获取值
                    String s = hm.get(key) ;
                    System.out.print(s+" ");
                }
                System.out.println();
    }
}
结果
这里写图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值