利用,ArrayList,HashMap,洗牌,发牌,看牌。

package MyProject.DouDiZhu;

import java.util.*;

public class MoNiDouDizhuB {
    public static void main(String[] args) {
        //创建一个牌盒
        HashMap<Integer, String> pukerHsMap = new HashMap<Integer, String>();
        //向牌盒里装牌
        /*
          ♥2 ♠3 ♣4 ♦5
          花色:♥ ♠ ♣ ♦
          牌面:3 4 5 6 7 8 9 10 J Q K A 2
         */
        //定义牌色数组:
        String[] pukerColor = {"♥", "♠", "♣", "♦"};
        //定义牌面值:
        String[] pukerSize = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
        //生成扑克牌,并把牌的对应该关系存到ArrayList用于洗牌,同时装进牌盒
        ArrayList<Integer> pukerTemp = new ArrayList<>();
        int ii = 0;
        for (String size : pukerSize) { //这时先遍历牌值,在遍历花色,才是后面排序的前提
            for (String color : pukerColor) {
                String puker = color + size;
                pukerHsMap.put(ii, puker);
                pukerTemp.add(ii);
                ii++;
            }
        }
        pukerHsMap.put(ii, "小王");
        pukerTemp.add(ii);
        ii++;
        pukerHsMap.put(ii, "大王");
        pukerTemp.add(ii);
        //装牌进盒

        //洗牌
        Collections.shuffle(pukerTemp); //对索引取随机排列,
/*        for (Integer index : pukerTemp) { // 利用随机后的排列,去map中找牌
            String pukerCode = pukerHsMap.get(index);
            System.out.print(pukerCode);
        }*/
        //定义四个玩家,采用TreeSet(),他能对牌进行排序,拿到的依然是牌的索引
        TreeSet<Integer> playerA = new TreeSet<>();
        TreeSet<Integer> playerB = new TreeSet<>();
        TreeSet<Integer> playerC = new TreeSet<>();
        TreeSet<Integer> playerD = new TreeSet<>();
        //发牌
        for (int i = 0; i < pukerTemp.size(); i++) {
            if (i >= pukerTemp.size() - 3) {
                Integer keyD = pukerTemp.get(i);
                playerD.add(keyD);
            } else if (i % 3 == 0) {
                Integer pukerA = pukerTemp.get(i);
                playerA.add(pukerA);
            } else if (i % 3 == 1) {
                Integer pukerB = pukerTemp.get(i);
                playerB.add(pukerB);
            } else if (i % 3 == 2) {
                Integer pukerC = pukerTemp.get(i);
                playerC.add(pukerC);
            }
        }
        //看牌:
        lookPuker("张某某", playerA, pukerHsMap);
        lookPuker("李某某", playerB, pukerHsMap);
        lookPuker("王某某", playerC, pukerHsMap);
        lookPuker("底 牌", playerD, pukerHsMap);
    }

    public static void lookPuker(String name, TreeSet<Integer> treeSet, HashMap<Integer, String> hs) {
        System.out.print(name + "的牌是:");
        for (Integer ss : treeSet) {
            String sss = hs.get(ss);
            System.out.print(sss + " ");
        }
        System.out.println();
    }
}

张某某的牌是:♥3 ♣3 ♣4 ♦4 ♣6 ♦7 ♠9 ♦9 ♥10 ♠10 ♥K ♠K ♠A ♥2 ♠2 ♦2 小王 
李某某的牌是:♥4 ♠5 ♣5 ♦6 ♠7 ♣7 ♠8 ♣8 ♦8 ♣9 ♣10 ♥J ♦J ♦Q ♣K ♥A ♦A 
王某某的牌是:♠3 ♠4 ♥5 ♦5 ♥6 ♠6 ♥7 ♥8 ♥9 ♦10 ♠J ♣J ♠Q ♣Q ♣A ♣2 大王 
底 牌的牌是:♦3 ♥Q ♦K 
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值