1. 程式人生 > 其它 >資料結構 順序表實現一副撲克牌的洗牌+發牌功能

資料結構 順序表實現一副撲克牌的洗牌+發牌功能

技術標籤:資料結構

先寫一個撲克牌的類


public class Card {
    public String color;//顏色
    public String Csize;//牌的大小

    public Card(String color, String csize) {
        this.color = color;
        Csize = csize;
    }

    @Override
    public String toString() {
        return "(" + color + Csize +")"
; } }

由於撲克牌具有四種花色,所以我們創造一個String[]陣列

static String[] Color={"♥","♠","♣","♦"};

構建一副撲克牌

    private static List BuyPoker(List<Card> list) {
        for(int i=0;i<4;i++){
            for(int j=2;j<=10;j++){//2~10
                Card ca=new Card(Color[
i],j+""); list.add(ca); } list.add(new Card(Color[i],"J")); list.add(new Card(Color[i],"Q")); list.add(new Card(Color[i],"K")); list.add(new Card(Color[i],"A")); } list.
add(new Card("","BigGhost")); list.add(new Card("","SmallGhost")); return list; }

因為我們在Card類中重寫了toString方法,所以可以直接列印Card的例項
我們將一副撲克牌放在ArrayList順序表中;

List<Card> list=new ArrayList<>();

洗牌。這裡我們可以直接呼叫Collections中內建的函式,因為List繼承與Collections所以有這樣的函式

Collections.shuffle(list);

發牌,這裡用到了一個盒子中套盒子的方法,現有一個大順序表,裡面的每一個節點裡面存的也是一個順序表,因為ArrayList是泛型類,所以這樣寫也是可以的,而且更簡潔;

  private static void Play(List<Card> list, int n) {
        // 發牌, 假設有三個玩家, 每個玩家, 給發 5 張牌
// 每個玩家手裡有 5 張牌, 這 5 張牌就使用另外一個 ArrayList 表示.
//        List<Card> player1 = new ArrayList<>();
//        List<Card> player2 = new ArrayList<>();
//        List<Card> player3 = new ArrayList<>();
        // players 型別仍然是 List, 泛型引數, 是一個 List<Card> , 每個元素就是一個 List<Card>
        List<List<Card>> players = new ArrayList<>();
        // 每次 add 的元素都是一個 ArrayList<Card> 型別
        players.add(new ArrayList<>());
        players.add(new ArrayList<>());
        players.add(new ArrayList<>());
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 5; j++) {
                Card top = list.remove(0);
                List<Card> player = players.get(i);
                player.add(top);
            }
        }
                //  展示手牌
        for (int i = 0; i < players.size(); i++) {
            List<Card> player = players.get(i);
            System.out.println("玩家" + i + " 的手牌是: " + player);
        }
    }

測試用例

    public static void main(String[] args) {
        List<Card> list=new ArrayList<>();
        BuyPoker(list);
        System.out.println(list);
        Collections.shuffle(list);
        int n=3;
        Play(list,n);
    }

執行結果
在這裡插入圖片描述