Collections.shuffle 洗牌。import java.util.*;
public class DouDizhuDeal {
public static void main(String[] args) {
// 1. 構建牌
List deck = new ArrayList<>();
String[] suits = {"♠", "♥", "♣", "♦"};
String[] ranks = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
for (String s : suits)
for (String r : ranks)
deck.add(s + r);
deck.add("🃏"); // 小王
deck.add("🃏"); // 大王(可區分顏色)
// 2. 洗牌
Collections.shuffle(deck);
// 3. 發牌
List p1 = new ArrayList<>(), p2 = new ArrayList<>(), p3 = new ArrayList<>();
for (int i = 0; i < 51; i++) {
String card = deck.get(i);
if (i % 3 == 0) p1.add(card);
else if (i % 3 == 1) p2.add(card);
else p3.add(card);
}
List bottom = deck.subList(51, 54);
// 4. 排序輔助(可選)
Comparator cardOrder = (a, b) -> rankValue(a) - rankValue(b);
p1.sort(cardOrder); p2.sort(cardOrder); p3.sort(cardOrder); bottom.sort(cardOrder);
// 5. 輸出
System.out.println("玩家1(" + p1.size() + "): " + p1);
System.out.println("玩家2(" + p2.size() + "): " + p2);
System.out.println("玩家3(" + p3.size() + "): " + p3);
System.out.println("底牌(" + bottom.size() + "): " + bottom);
}
static int rankValue(String card) {
if (card.contains("🃏")) return 100;
String r = card.substring(1);
if ("3456789".contains(r)) return r.charAt(0) - '0';
if (r.equals("10")) return 10;
if (r.equals("J")) return 11;
if (r.equals("Q")) return 12;
if (r.equals("K")) return 13;
if (r.equals("A")) return 14;
if (r.equals("2")) return 15;
return 0;
}
}
CSDN 完整項目下載:斗地主發牌源碼
用 `List