Java集合练习_斗地主发牌

思路
  • 创建一个HashMap集合用于记录54张牌

    • {0=♥2, 1=♦2, 2=♣2, 3=♠2, 4=♥3, 5=♦3, ... , 50=♣A, 51=♠A, 52=大王, 53=小王}
  • HashMap集合的key值记录54张牌的顺序
  • 创建一个普通ArrayList集合用于记录54个数字,对应HashMap的54个Key值
  • 打乱整个ArrayList集合(洗牌)
  • 创建四个TreeSet集合(三个玩家集合和底牌集合),按照一人一张的顺序分别将张牌的Key值存入三个玩家集合中,最后三张特殊处理存入底牌集合。

    • 使用TreeSet集合存牌的原因是因为TreeSet集合自带排序功能。
  • 根据四个TreeSet集合记录的Key值获取HashM集合中映射的value值
代码
package com.collection;

import java.util.*;

public class PokerTest {
    public static void main(String[] args) {
        String decor[] = {"♥", "♦", "♣", "♠"};
        String number[] = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
        HashMap cards = new HashMap();
        int num = 0;
        for (int j = 0; j < number.length; j++) {
            for (int i = 0; i < decor.length; i++) {
                cards.put(num++, decor[i] + number[j]);
            }
        }
        cards.put(52, "大王");
        cards.put(53, "小王");
        ArrayList cards_index = new ArrayList<>();
        for (int i = 0; i < 54; i++) {
            cards_index.add(i);
        }

        Collections.shuffle(cards_index);

        TreeSet player1 = new TreeSet();
        TreeSet player2 = new TreeSet();
        TreeSet player3 = new TreeSet();
        TreeSet hole_cards = new TreeSet();
        for (int i = 0; i < cards_index.size(); i++) {
            if (i >= 51) {
                hole_cards.add(cards_index.get(i));
            } else if (i % 3 == 0) {
                player1.add(cards_index.get(i));
            } else if (i % 3 == 1) {
                player2.add(cards_index.get(i));
            } else if (i % 3 == 2) {
                player3.add(cards_index.get(i));
            }
        }

        System.out.println("Player1--------");
        for (Integer i1 : player1) {
            System.out.print(cards.get(i1) + "\t");
        }
        System.out.println("\nPlayer2--------");
        for (Integer i2 : player2) {
            System.out.print(cards.get(i2) + "\t");
        }
        System.out.println("\nPlayer3--------");
        for (Integer i3 : player3) {
            System.out.print(cards.get(i3) + "\t");
        }
        System.out.println("\nHole Cards--------");
        for (Integer i4 : hole_cards) {
            System.out.print(cards.get(i4) + "\t");
        }
    }
}

/*
    Player1--------
    ♠2    ♣3    ♥4    ♣6    ♣7    ♠7    ♥8    ♠8    ♣9    ♥10    ♣10    ♣J    ♥Q    ♦Q    ♥K    ♥A    ♦A    
    Player2--------
    ♦3    ♣4    ♦5    ♣5    ♥6    ♦6    ♠6    ♦7    ♣8    ♥9    ♦9    ♥J    ♠J    ♣K    ♠A    大王    小王    
    Player3--------
    ♥2    ♣2    ♥3    ♠3    ♦4    ♠4    ♥5    ♦8    ♠9    ♦10    ♠10    ♦J    ♣Q    ♠Q    ♦K    ♠K    ♣A    
    Hole Cards--------
    ♦2    ♠5    ♥7    
*/

你可能感兴趣的:(javacollection)