斗地主,制造牌,随机发牌,为牌排序

这个Java程序创建了一个扑克牌集合,并通过洗牌随机分配给三位玩家和底牌,最后按顺序输出玩家和底牌的牌面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.*;

public class HomeWork01 {

    public static void main(String[] args) {
        String[]  huase  =  {"♠","♣","♥","♦"};
        String [] number = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        //创建Map集合用来存放牌
        Map<Integer,String> m = new HashMap<>();
        Integer key = 0;
        for (String s : number) {
            for (String s1 : huase) {
                key++;
                m.put(key,s + s1);
            }
        }
        m.put(key + 1,"☺");
        m.put(key + 2,"☻");
        //获取所有牌的value对应的Key,然后将Key值作为一个索引存放到Set集合
        Set<Integer> set = m.keySet();
        //为了将索引的顺序打乱,将Set集合转化为List集合
        List<Integer> sK = new ArrayList<>(set);
        //将索引的顺序打乱,以便后续做到随即发牌
        Collections.shuffle(sK);
        //创建玩家1,用来存放他得到牌的索引
        List<Integer> la = new ArrayList();
        //创建玩家2,用来存放他得到牌的索引
        List<Integer> lb = new ArrayList();
        //创建玩家3,用来存放他得到牌的索引
        List<Integer> lc = new ArrayList();
        //创建底牌,用来存放底牌的索引
        List<Integer> dipai = new ArrayList();
        //为上面四个集合添加数据(牌的索引)
        for (int i = 0; i < m.size(); i++) {
            if(i > 50)
                dipai.add(sK.get(i));
            if(i % 3 == 0)
                la.add(sK.get(i));
            if(i % 3 == 1)
                lb.add(sK.get(i));
            if(i % 3 == 2)
                lc.add(sK.get(i));
        }
        //将集合排序
        Collections.sort(la);
        Collections.sort(lb);
        Collections.sort(lc);
        Collections.sort(dipai);
        //将上面集合中存储的数据作为key,取出value值.
        System.out.print("玩家1排序之后的牌:  ");
        for (Integer i : la) {
            System.out.print(m.get(i) + "   ");
        }
        System.out.println();
        System.out.print("玩家2排序之后的牌:  ");
        for (Integer i : lb) {
            System.out.print(m.get(i) + "   ");
        }
        System.out.println();
        System.out.print("玩家3排序之后的牌:  ");
        for (Integer i : lc) {
            System.out.print(m.get(i) + "   ");
        }
        System.out.println();
        System.out.print("底牌:  ");
        for (Integer i : dipai) {
            System.out.print(m.get(i) + "   ");
        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值