ArrayList练习(扑克牌模拟)

Source

Card类

package card;

import java.util.Objects;

/**
 * @ClassName Card
 * @Description :TODO
 * @Author Josvin
 * @Date 2021/03/06/13:48
 */
public class Card {
    
      
    private final int rank;
    private final String suit;

    public Card(int rank, String suit) {
    
      
        this.rank = rank;
        this.suit = suit;
    }

    // [♥  A]
    @Override
    public String toString() {
    
      
        return String.format("[%s %s]", suit, rankToString(rank));
    }

    @Override
    public boolean equals(Object o) {
    
      
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Card card = (Card) o;
        return rank == card.rank &&
                Objects.equals(suit, card.suit);
    }

    @Override
    public int hashCode() {
    
      

        return Objects.hash(rank, suit);
    }

    private static String rankToString(int rank) {
    
      
        switch (rank) {
    
      
            case 1:
                return "A";
            case 11:
                return "J";
            case 12:
                return "Q";
            case 13:
                return "K";
            default:
                return String.valueOf(rank);
        }

    }

    public static void main(String[] args) {
    
      
        Card card = new Card(1, "♥");
        Card card1 = new Card(2, "♠");
        System.out.println(card);
        System.out.println(card1);
    }

}

Game类

package card;

import java.util.*;

/**
 * @ClassName Game
 * @Description :TODO
 * @Author Josvin
 * @Date 2021/03/06/13:57
 */
public class Game {
    
      
    public static void main(String[] args) {
    
      

      //  List<Integer> list = new LinkedList<>();


        // 1、初始化一副牌
        ArrayList<Card> cardArrayList = initCardArrayList();
        System.out.println(cardArrayList);
        // 2、进行洗牌

       // Collections.shuffle(cardArrayList);
        shuffer(cardArrayList);
        System.out.println(cardArrayList);
        Card card = new Card(1, "♥");
        System.out.println(cardArrayList.contains(card));

        //  发牌(三个玩家)
        //
        ArrayList<Card> playerA = new ArrayList<>();
        ArrayList<Card> playerB = new ArrayList<>();
        ArrayList<Card> playerC = new ArrayList<>();

        for (int i = 0; i < 5; i++) {
    
      
            Card card1 = cardArrayList.remove(0);
            playerA.add(card1);
            Card card2 = cardArrayList.remove(0);
            playerB.add(card2);
            Card card3 = cardArrayList.remove(0);
            playerC.add(card3);

        }


        System.out.println("===================");
        System.out.println(playerA);
        System.out.println(playerB);
        System.out.println(playerC);
        System.out.println(cardArrayList.size());
    }

    private static void shuffer(ArrayList<Card> cardArrayList) {
    
      
        Random random = new Random();
        for (int i = cardArrayList.size() - 1; i > 0; i--) {
    
      
            //
            // Card card = cardArrayList.get(i);
            //
            int randmIndex = random.nextInt(i);
            // 交换
            Card temp = cardArrayList.get(i);
            cardArrayList.set(i, cardArrayList.get(randmIndex));
            cardArrayList.set(randmIndex, temp);
        }
    }

    private static ArrayList<Card> initCardArrayList() {
    
      
        ArrayList<Card> cardArrayList = new ArrayList<>();
        String[] suits = {
    
      "♥", "♠", "♣", "♦"};
        for (String suit : suits
                ) {
    
      
            for (int i = 1; i < 14; i++) {
    
      
                Card card = new Card(i, suit);
                cardArrayList.add(card);
            }
        }
        return cardArrayList;
    }
}