1. 程式人生 > 其它 >鬥地主案例思路分析及程式碼實現

鬥地主案例思路分析及程式碼實現

鬥地主案例需求分析及程式碼實現

/*
鬥地主綜合案例:
    1.準備牌
    2.洗牌
    3.發牌
    4.看牌
 */

import java.util.ArrayList;
import java.util.Collections;

public class DouDiZhu {
    public static void main(String[] args) {
        //1.準備牌
        //定義一個儲存54張牌的ArrayList集合,泛型使用String
        ArrayList<String> poker = new ArrayList<>();
        //定義兩個陣列,一個數組儲存拍的花色,一個數組儲存牌的序號
        String[] colors = {"♠","♥","♣","♦"};
        String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
        //先把大王和小王儲存到poker集合中
        poker.add("大王");
        poker.add("小王");
        //迴圈巢狀遍歷兩個陣列,組裝52張牌
        for (String color : colors) {
            for (String number : numbers) {
                //把組裝好的牌儲存到poker集合中
                poker.add(color+number);
            }
        }
        //System.out.println(poker);

        /*
        2.洗牌
        使用集合的工具類Collections中的方法
        static void shuffle(List<?> list) 使用預設的隨機源隨機排列指定的列表。
         */

        Collections.shuffle(poker);
        //System.out.println(poker);

        /*
        3.發牌
         */
        //定義4個集合,儲存玩家的牌和底牌
        ArrayList<String> player01 = new ArrayList<>();
        ArrayList<String> player02 = new ArrayList<>();
        ArrayList<String> player03 = new ArrayList<>();
        ArrayList<String> diPai = new ArrayList<>();

        /*
        遍歷poker集合,獲取每一張牌
        使用poker結合的索引%3給三個玩家輪流發牌
        剩餘三張牌給底牌
        注意:
            先判斷底牌(i>=51),否則牌就發沒了
         */
        for (int i = 0; i < poker.size(); i++) {
            //獲取每一張牌
            String p = poker.get(i);
            //輪流發牌
            if (i>=51){
                //給底牌發牌
                diPai.add(p);
            }else if (i%3==0){
                //給玩家1發牌
                player01.add(p);
            }else if (i%3==1){
                //給玩家2發牌
                player02.add(p);
            }else if (i%3==2){
                //給玩家3發牌
                player03.add(p);
            }
        }
        //4.看牌
        System.out.println("劉德華:"+player01);
        System.out.println("周潤發:"+player02);
        System.out.println("周星馳:"+player03);
        System.out.println("底牌:"+diPai);
    }
}