斗地主JAVA简要实现

原创
2017/08/12 02:28
阅读数 260
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;

public class ddzDemo2 {
    /**
     * 斗地主--最终版
     * 
     * @param args
     *            定义牌 装牌 洗牌 发牌 看牌
     */

    public static void main(String[] args) {
        // 按从小到大存放牌
        HashMap<Integer, String> hmcard = new HashMap<Integer, String>();
        
        // 定义牌的序号
        ArrayList<Integer> indexcard = new ArrayList<Integer>();
        
        String[] colorCard = { "♣", "♦", "♥", "♠" };
        String[] digitCard = { "3", "4", "5", "6", "7", "8", "9", "10", "J",
                "Q", "K", "A", "2" };

        // 装牌
        int index = 0;
        for (String d : digitCard) {
            for (String c : colorCard) {
                hmcard.put(index, c.concat(d));
                indexcard.add(index);
                index++;
            }
        }
        hmcard.put(index, "小王");
        indexcard.add(index);
        index++;
        hmcard.put(index, "大王");
        indexcard.add(index);

        // 洗牌
        Collections.shuffle(indexcard);

        // 发牌 TressSet有序
        TreeSet<Integer> player1 = new TreeSet<Integer>();
        TreeSet<Integer> player2 = new TreeSet<Integer>();
        TreeSet<Integer> player3 = new TreeSet<Integer>();
        TreeSet<Integer> hole = new TreeSet<Integer>();
        for (int i = 0; i < indexcard.size(); i++) {
            if (i > indexcard.size() - 3 - 1) {
                hole.add(indexcard.get(i));
            } else if (i % 3 == 0) {
                player1.add(indexcard.get(i));
            } else if (i % 3 == 1) {
                player2.add(indexcard.get(i));
            } else if (i % 3 == 2) {
                player3.add(indexcard.get(i));
            }
        }

        // 看牌
        checkcard("农民1", player1, hmcard);
        checkcard("农民2", player2, hmcard);
        checkcard("地主", player3, hmcard);
        checkcard("hole", hole, hmcard);
    }

    public static void checkcard(String name, TreeSet<Integer> pl,
            HashMap<Integer, String> hmcd) {
        StringBuilder sb = new StringBuilder();
        for (int p : pl) {
            sb.append(hmcd.get(p) + " ");
        }
        if (name.equals("hole")) {
            System.out.println("底牌是: " + sb);
        } else {
            System.out.println(name + "的牌是: " + sb);
        }

    }
}

运行:

农民1的牌是: ♣3 ♠3 ♣4 ♥4 ♠4 ♥8 ♠8 ♦9 ♠9 ♠10 ♦J ♥J ♣Q ♣K ♦A ♠A ♣2 
农民2的牌是: ♥3 ♣5 ♥5 ♥6 ♠6 ♦7 ♣8 ♥9 ♦10 ♣J ♠J ♠Q ♥K ♠K ♣A ♠2 小王 
地主的牌是: ♦3 ♦4 ♦5 ♠5 ♣6 ♣7 ♥7 ♠7 ♦8 ♣10 ♥10 ♦Q ♥Q ♦K ♥A ♦2 大王 
底牌是: ♦6 ♣9 ♥2 

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部