zoukankan      html  css  js  c++  java
  • 基于集合实现斗地主发牌功能

    基于单列集合实现

    package com.demo03;
    
    import java.util.ArrayList;
    import java.util.Collections;
    
    public class doudizhu {
        public static void main(String[] args) {
    //        System.out.println(createPoker());
            ArrayList poker = createPoker();//先创建扑克牌
            shufflePoker(poker);// 洗牌
    //        System.out.println(poker);
            sendPoker(poker);
        }
    
        /*
        1 创建扑克牌
        * */
        public static ArrayList createPoker() {
            String[] mode = new String[]{"红桃", "方块", "梅花", "黑桃"};
            String[] num = new String[]{"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
            ArrayList<String> poker = new ArrayList<>();
            for (String s : mode) {
                for (String s1 : num) {
                    poker.add(s + ":" + s1);
                }
            }
            poker.add("小王");
            poker.add("大王");
            return poker;
        }
    
        /*
         * 2 洗牌
         * */
        public static void shufflePoker(ArrayList<String> poker) {
            Collections.shuffle(poker);
        }
    
        /*
         * 3 发牌
         * */
        public static void sendPoker(ArrayList<String> poker) {
            ArrayList<String> play01 = new ArrayList<>();
            ArrayList<String> play02 = new ArrayList<>();
            ArrayList<String> play03 = new ArrayList<>();
            ArrayList<String> dipai = new ArrayList<>();
            for (int i = 0; i < poker.size(); i++) {
                if (i >= 51) {
                    dipai.add(poker.get(i));
                } else if (i % 3 == 0) {
                    play01.add(poker.get(i));
                } else if (i % 3 == 1) {
                    play02.add(poker.get(i));
                } else if (i % 3 == 2) {
                    play03.add(poker.get(i));
                }
            }
            System.out.println("玩家1:" + play01);
            System.out.println("玩家2:" + play02);
            System.out.println("玩家3:" + play03);
            System.out.println("底牌:" + dipai);
        }
    }

    基于双列集合实现

    package com.demo03;
    
    import java.util.*;
    
    public class doudizhuplus {
        public static void main(String[] args) {
            //1 准备扑克牌
            HashMap<Integer, String> map = new HashMap<Integer, String>();// 存储扑克牌的容器
            ArrayList<Integer> pokerIndex = new ArrayList<>(); // 存储扑克牌索引的容器
            List<String> colors = List.of("红桃", "方块", "梅花", "黑桃");
            List<String> nums = List.of("2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");
            // 2 生成扑克
            int count = 0;
            pokerIndex.add(count);
            map.put(count++, "大王");
            pokerIndex.add(count);
            map.put(count++, "小王");
            for (String num : nums) {
                for (String color : colors) {
                    pokerIndex.add(count);
                    map.put(count++, color + ":" + num);
                }
            }
            // 3 洗牌
            Collections.shuffle(pokerIndex);
            // 4 发牌
            ArrayList<Integer> play01 = new ArrayList<>();
            ArrayList<Integer> play02 = new ArrayList<>();
            ArrayList<Integer> play03 = new ArrayList<>();
            ArrayList<Integer> dipai = new ArrayList<>();
            for (int index = 0; index < pokerIndex.size(); index++) {
                if (index >= 51) {
                    dipai.add(pokerIndex.get(index));
                } else if (index % 3 == 0) {
                    play01.add(pokerIndex.get(index));
                } else if (index % 3 == 1) {
                    play02.add(pokerIndex.get(index));
                } else if (index % 3 == 2) {
                    play03.add(pokerIndex.get(index));
                }
            }
            // 5 看牌
            ArrayList<String> poker_play01 = show(play01, map);
            ArrayList<String> poker_play02 = show(play02, map);
            ArrayList<String> poker_play03 = show(play03, map);
            ArrayList<String> poker_dipai = show(dipai, map);
    
            System.out.println("玩家1:" + poker_play01);
            System.out.println("玩家2:" + poker_play02);
            System.out.println("玩家3:" + poker_play03);
            System.out.println("底牌:" + poker_dipai);
        }
    
        public static ArrayList show(ArrayList<Integer> play, Map<Integer, String> map) {
            ArrayList<String> poker_play = new ArrayList<>();
            Collections.sort(play);
            for (Integer index : play) {
                String item = map.get(index);
                poker_play.add(item);
            }
            return poker_play;
        }
    }
  • 相关阅读:
    fork()和僵尸进程
    布尔变量面试题
    vue学习之二
    vue学习之一
    圈复杂度
    phpExcel与jq的ajax
    Object.defineProperty与修改某个数组实现监听效果
    mpn不得不说的坑
    论javascript编写优美
    微信小程序之学习
  • 原文地址:https://www.cnblogs.com/sun-10387834/p/12866345.html
Copyright © 2011-2022 走看看