Java 使用集合实现斗地主

import java.util.*;

/**
 * @author: ChengLong
 * @datetime: 2021/7/14 19:15
 */

/*使用集合,模拟实现斗地主发牌。地主20张,农民17张,农民17张
* */
public class DouDIZhu {
    public static void main(String[] args) {
        //组装牌
        List<String> color = new ArrayList<>();
        Collections.addAll(color, "♠", "♥", "♦", "♣");
        List<String> nums = new ArrayList<>();
        Collections.addAll(nums, "2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");

        //存储组合后的扑克
        HashMap<Integer, String> poker = new HashMap<>();

        //存储索引
        ArrayList<Integer> pokerIndex = new ArrayList<>();

        int index = 0;
        poker.put(index, "大王");
        pokerIndex.add(index);

        index++;
        poker.put(index, "小王");
        pokerIndex.add(index);
        index++;


        //组合放入map中,索引为key,扑克为value
        for (String num : nums) {
            for (String s : color) {
                poker.put(index, s + num);
                pokerIndex.add(index);
                index++;
            }
        }

        //洗牌
        Collections.shuffle(pokerIndex);
//        System.out.print(pokerIndex);

        //创建人物
        ArrayList<Integer> player1 = new ArrayList<>();
        ArrayList<Integer> player2 = new ArrayList<>();
        ArrayList<Integer> dizhu = new ArrayList<>();
        ArrayList<Integer> dipai = new ArrayList<>();

        //发牌
        for (int i = 0; i < pokerIndex.size(); i++) {
            Integer integer = pokerIndex.get(i);
            if (i>=51){
                //三张底牌发给地主
                dipai.add(integer);
                dizhu.add(integer);
            }else if (i % 3 == 0){
                player1.add(integer);
            }else if (i % 3 == 1){
                player2.add(integer);
            }else if (i % 3 == 2){
                dizhu.add(integer);
            }
        }


        //排序
        Collections.sort(player1);
        Collections.sort(player2);
        Collections.sort(dizhu);
        Collections.sort(dipai);
//        System.out.println(player1);

        //打印
        printPoker("底牌",dipai,poker);
        printPoker("张三",player1,poker);
        printPoker("李四",player2,poker);
        printPoker("王武",dizhu,poker);




    }

    /**
     * 
     * @param name 玩家名字
     * @param list 玩家牌的索引
     * @param map  扑克牌
     */
    public static void printPoker(String name,ArrayList<Integer> list,HashMap<Integer,String> map){
        System.out.print(name+":");
        
        //取出索引对应的扑克牌,并打印
        for (Integer integer : list) {
            System.out.print(map.get(integer)+" ");
        }
        System.out.println("");
    }
}

posted @ 2021-07-14 22:46  Lucky_龍  阅读(104)  评论(0)    收藏  举报