JAVA基础 实现斗地主发牌 用到三种集合的特性 “Arraylist”,“TreeSet”, “Hashmap“

流程:

1.创建Hashmap集合 模拟牌盒 键是牌的id  值是牌面 

2.创建ArrayList集合  元素对应牌的id   1~53

3.创建两个数组 数组1 存储四个花色  数组2 存储0~51+大,小王

4.Collections.shuffle 打乱Arraylist集合  模拟洗牌

5.遍历Arraylist集合  模拟发牌

6.创建TreeSet集合  使牌对应的id排序  模拟理牌

7.遍历TreeSet集合 根据元素对应Hashmap的键 找到对应的值 模拟看牌

import java.util.*;

public class DDZdome {
    public static void main(String[] args) {
        HashMap<Integer, String> hash = new HashMap<Integer, String>();

        ArrayList<Integer> arr = new ArrayList<Integer>();

        String[] huase = {"♠", "♥", "♣", "♦" };
        String[] pai = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "k", "A", "2" };
        int id = 0;
        for (String p : pai) {
            for (String h : huase) {
                hash.put(id, h + p);
                arr.add(id);
                id++;
            }
        }
        hash.put(id, "小王");
        arr.add(id);
        id++;
        hash.put(id, "大王");
        arr.add(id);
        System.out.println(hash);

        Collections.shuffle(arr);

        TreeSet<Integer> pl1 = new TreeSet<Integer>();
        TreeSet<Integer> pl2 = new TreeSet<Integer>();
        TreeSet<Integer> pl3 = new TreeSet<Integer>();
        TreeSet<Integer> dp = new TreeSet<Integer>();


        for (int i=0;i<arr.size();i++){
            if (i>=arr.size()-3){
                dp.add(arr.get(i));
            }else if(i%3==0){
                pl1.add(arr.get(i));
            }else if(i%3==1){
                pl2.add(arr.get(i));
            }else if(i%3==2){
                pl3.add(arr.get(i));
            }
        }

        System.out.println(pl1);
        show("地主",pl1,hash);
        show("农民",pl2,hash);
        show("农民",pl3,hash);
        show("底牌",dp,hash);
    }

    public static void show(String name,TreeSet<Integer> tree,HashMap<Integer, String> hash){
        System.out.print(name+" :");
        for (int i:tree){
            System.out.print(hash.get(i)+" ");
        }
        System.out.println();
    }
    
}

输出结果:

{0=♠3, 1=♥3, 2=♣3, 3=♦3, 4=♠4, 5=♥4, 6=♣4, 7=♦4, 8=♠5, 9=♥5, 10=♣5, 11=♦5, 12=♠6, 13=♥6, 14=♣6, 15=♦6, 16=♠7, 17=♥7, 18=♣7, 19=♦7, 20=♠8, 21=♥8, 22=♣8, 23=♦8, 24=♠9, 25=♥9, 26=♣9, 27=♦9, 28=♠10, 29=♥10, 30=♣10, 31=♦10, 32=♠J, 33=♥J, 34=♣J, 35=♦J, 36=♠Q, 37=♥Q, 38=♣Q, 39=♦Q, 40=♠k, 41=♥k, 42=♣k, 43=♦k, 44=♠A, 45=♥A, 46=♣A, 47=♦A, 48=♠2, 49=♥2, 50=♣2, 51=♦2, 52=小王, 53=大王}
[0, 2, 3, 5, 6, 7, 10, 14, 16, 18, 26, 32, 38, 42, 44, 45, 48]
地主 :♠3 ♣3 ♦3 ♥4 ♣4 ♦4 ♣5 ♣6 ♠7 ♣7 ♣9 ♠J ♣Q ♣k ♠A ♥A ♠2 
农民 :♥5 ♦5 ♥6 ♦6 ♥7 ♦7 ♣8 ♦8 ♥9 ♠10 ♦10 ♥J ♦J ♥Q ♥k ♦A 小王 
农民 :♥3 ♠4 ♠5 ♠6 ♠8 ♥8 ♦9 ♣10 ♣J ♠Q ♦Q ♦k ♣A ♥2 ♣2 ♦2 大王 
底牌 :♠9 ♥10 ♠k 

 

上一篇:JavaSE-15.2.1【TreeSet集合特点】


下一篇:集合精通(Set + Map)