1. 程式人生 > 其它 >按照鬥地主的規則,完成洗牌發牌的動作。 具體規則: 使用 54 張牌打亂順序,三個玩家參與遊戲,三人交替摸牌,每人 17 張牌,最後三 張留作底牌。

按照鬥地主的規則,完成洗牌發牌的動作。 具體規則: 使用 54 張牌打亂順序,三個玩家參與遊戲,三人交替摸牌,每人 17 張牌,最後三 張留作底牌。

package day_02_Demo.pokerDemo;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

//按照鬥地主的規則,完成洗牌發牌的動作。 具體規則:
//使用 54 張牌打亂順序,三個玩家參與遊戲,三人交替摸牌,每人 17 張牌,最後三
//張留作底牌。
public class Poker {
    public static void main(String[] args) {
//  準備牌:
//建立三個集合分別是:撲克箱pokerBox,撲克花色colors,撲克數字numbers
        ArrayList<String> pokerBox = new ArrayList<>();
        Collection<String> colors = new ArrayList<>();
        Collection<String> numbers = new ArrayList<>();

        colors.add("♠");
        colors.add("♥");
        colors.add("♦");
        colors.add("♣");
        for (int i = 2; i <=10 ; i++) {
            numbers.add(i+"");//注意拼接
        }
        numbers.add("A");
        numbers.add("J");
        numbers.add("Q");
        numbers.add("K");
        //新增大王,小王
        pokerBox.add("大王");
        pokerBox.add("小王");
        //拼接花色和數字,
//        System.out.println(colors);
//        System.out.println(numbers);
        for (String color:colors ) {
            for (String number:numbers ) {
                String s = color+number;
                pokerBox.add(s);
            }
        }
        System.out.println(pokerBox);
        //打亂撲克牌:洗牌
        Collections.shuffle( pokerBox);
        System.out.println(pokerBox);
//• 發牌
//將每個人以及底牌設計為 ArrayList,將最後 3 張牌直接存放於底牌,剩餘牌通過對3 取模依次發牌。
        //建立三個玩家player,和底牌
        Collection<String> player1 = new ArrayList<>(); 
        Collection<String> player2 = new ArrayList<>(); 
        Collection<String> player3 = new ArrayList<>(); 
        Collection<String> diPai = new ArrayList<>();

        //遍歷撲克箱pokerBox
        for (int i = 0; i <pokerBox.size() ; i++) {
            //獲取牌面
//            String card = (String) ((List<?>) pokerBox).get(i);
            String card = pokerBox.get(i);
            if (i >=51) {
                diPai.add(card);
            }else if (i%3 == 0){
                player1.add(card);
            }else if (i%3 == 1){
                player2.add(card);
            }else {
                player3.add(card);
            }
        }


//• 看牌
//直接列印每個集合。
        System.out.println("tom:"+player1);
        System.out.println("JACK:"+player2);
        System.out.println("LILI:"+player3);
        System.out.println("tom:"+diPai);
    }
}