Python小demo-斗牛扑克发牌流程开发

16 阅读1分钟

斗牛扑克发牌流程开发

  • 定义好52张扑克牌(花色、大小)
  • 生成扑克牌
  • 洗牌(打乱顺序)
  • 发牌(玩家个数、玩家5张手牌)
import random

ranks = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
suits = ['♥', '♦', '♠', '♣']


# 生成扑克牌
def create_poker_list():
    return list(f"{rank}{suit}" for suit in suits for rank in ranks)


# 洗牌
def shuffle_poker(pocker_list):
    random.shuffle(pocker_list)
    return pocker_list


# 发牌
def deal_poker(pocker_list, player_num, player_hand_num):
    hand_list = []
    for i in range(player_num):
        hand_list.append(pocker_list[0:player_hand_num])
        pocker_list = pocker_list[player_hand_num:]
    return hand_list


# 斗牛扑克游戏发牌函数
def douniu_game(player_num, player_hand_num):
    pocker_list = create_poker_list()
    new_poker_list = shuffle_poker(pocker_list)
    return deal_poker(new_poker_list, player_num, player_hand_num)


for index, item in enumerate(douniu_game(2, 5)):
    print(f"{index}{item}")
0['9♣', '4♠', 'J♥', '7♠', '8♠']
1['3♠', '8♦', '8♣', '10♥', 'A♣']

.java

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

public class test {
    private static final String[] ranks = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
    private static final String[] suits = {"♥", "♦", "♠", "♣"};

    /**
     * 生成扑克牌
     * @return 扑克牌列表
     */
    public static List<String> createPokerList() {
        List<String> pokerList = new ArrayList<>();
        for (String suit : suits) {
            for (String rank : ranks) {
                pokerList.add(rank + suit);
            }
        }
        return pokerList;
    }

    /**
     * 洗牌
     * @param pokerList 扑克牌列表
     * @return 洗好的扑克牌列表
     */
    public static List<String> shufflePoker(List<String> pokerList) {
        Collections.shuffle(pokerList);
        return pokerList;
    }

    /**
     * 发牌
     * @param pokerList 扑克牌列表
     * @param playerNum 玩家数量
     * @param playerHandNum 每个玩家的手牌数
     * @return 每个玩家的手牌列表
     */
    public static List<List<String>> dealPoker(List<String> pokerList, int playerNum, int playerHandNum) {
        List<List<String>> handList = new ArrayList<>();
        for (int i = 0; i < playerNum; i++) {
            List<String> hand = new ArrayList<>(pokerList.subList(0, playerHandNum));
            handList.add(hand);
            pokerList = pokerList.subList(playerHandNum, pokerList.size());
        }
        return handList;
    }

    /**
     * 斗牛扑克游戏发牌函数
     * @param playerNum 玩家数量
     * @param playerHandNum 每个玩家的手牌数
     * @return 每个玩家的手牌列表
     */
    public static List<List<String>> douniuGame(int playerNum, int playerHandNum) {
        List<String> pokerList = createPokerList();
        List<String> newPokerList = shufflePoker(pokerList);
        return dealPoker(newPokerList, playerNum, playerHandNum);
    }

    public static void main(String[] args) {
        List<List<String>> result = douniuGame(2, 5);
        for (int index = 0; index < result.size(); index++) {
            System.out.println(index + ":" + result.get(index));
        }
    }
}