今天偶然发现三年前已经有人在acwing发了斗地主发牌的代码
想起一年多前自己也写过一个
import java.util.*;
public class 斗地主 {
static List<String> p = new ArrayList<>(), p1 = new ArrayList<>(), p2 = new ArrayList<>(), p3 = new ArrayList<>(), poker = new ArrayList<>();
static Map<String, Integer> map = new HashMap<>();// 存牌优先级的
static String color[] = {"♠", "♥", "♣", "♦"};
static String cards[] = {"Joker", "joker", "2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
private static void createPoker() {
poker.add(cards[0]); poker.add(cards[1]);
for (int i = 2; i < cards.length; i++) for (String c : color) poker.add(c + cards[i]);
}
private static void Priority() {
for (int i = poker.size() - 1, p = 1; i >= 0; i--) map.put(poker.get(i), p++);
}
private static List<String> sort(List<String> s) {
Collections.sort(s, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return map.get(o2) - map.get(o1);
}
});
return s;
}
private static void ThreeCards() {
Collections.shuffle(poker);
for (int i = 0; i < 3; i++) {
p.add(poker.get(0));
poker.remove(0);
}
}
private static void sendCards() {
for (int i = 0; i < 51; i++) {
Collections.shuffle(poker);
if(i % 3 == 0) p1.add(poker.get(0));
if(i % 3 == 1) p2.add(poker.get(0));
if(i % 3 == 2) p3.add(poker.get(0));
poker.remove(0);
}
}
public static void main(String[] args) {
createPoker();// 创建54张牌
Priority();// 优先级排序
ThreeCards();// 底牌
sendCards();
System.err.println("地主牌: " + sort(p));
System.err.println("player1: " + sort(p1));
System.err.println("player2: " + sort(p2));
System.err.println("player3: " + sort(p3));
}
}