A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

[Java] 纯文本查看 复制代码
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

public class Test {
        /*
         * 成龙,甄子丹,李连杰三个人打斗地主,三人约定,洗牌后,随机抽取一张"明牌"并夹在中间;然后依次抓牌,               谁抓到这张便自动作为地主,并收取最后三张。
         * 要求:请用程序实现这一过程,最后打印地主名,以及三个人的牌(要求排序);
         */
        public static void main(String[] args) {
                String[] color = { "♠", "♥", "♣", "♦" };
                String[] num = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2" };
                // 创建map存储牌
                Map<Integer, String> poker = new HashMap<Integer, String>();
                // list存储map的key值
                List<Integer> list = new ArrayList<Integer>();
                poker.put(52, "小王");
                poker.put(53, "大王");
                list.add(52);
                list.add(53);
                int count = 0;
                for (String stringN : num) {
                        for (String stringC : color) {
                                poker.put(count, stringC + stringN);
                                list.add(count);
                                count++;
                        }
                }
                // 定义一个随机牌,拿到这张牌就是地主,只能是前51张牌,要不然谁都拿不到,或者在随机数,制定随机的人是地主
                int number = new Random().nextInt(51);
                System.out.println("明牌为" + poker.get(number));
                // 定义四个集合,用来存储随机的牌
                ArrayList<Integer> player01 = new ArrayList<Integer>();
                ArrayList<Integer> player02 = new ArrayList<Integer>();
                ArrayList<Integer> player03 = new ArrayList<Integer>();
                ArrayList<Integer> bottom = new ArrayList<Integer>();
                // 模拟洗牌过程
                Collections.shuffle(list);
                // 模拟发牌过程
                for (int i = 0; i < list.size(); i++) {
                        // 将最前面的3张牌拿出来,留作底牌
                        if (i >= 51) {
                                // 根据索引找到对应的整数
                                bottom.add(list.get(i));
                        } else if (i % 3 == 0) {
                                player01.add(list.get(i));
                        } else if (i % 3 == 1) {
                                player02.add(list.get(i));
                        } else if (i % 3 == 2) {
                                player03.add(list.get(i));
                        }
                }
                // 判断明牌的那张牌在谁手里,然后底牌全是他的
                if (player01.contains(number)) {
                        player01.addAll(bottom);
                } else if (player02.contains(number)) {
                        player02.addAll(bottom);
                } else if (player03.contains(number)) {
                        player03.addAll(bottom);
                }
                // 将牌排序
                Collections.sort(player01);
                Collections.sort(player02);
                Collections.sort(player03);
                Collections.sort(bottom);
                System.out.println("底牌为:");
                for (Integer integer : bottom) {
                        System.out.print(poker.get(integer) + "  ");
                }
                System.out.println();
                prtinPoker("成龙", poker, player01);
                prtinPoker("甄子丹", poker, player02);
                prtinPoker("李连杰", poker, player03);

        }

        private static void prtinPoker(String name, Map<Integer, String> poker, ArrayList<Integer> player) {
                if (player.size() == 20) {
                        System.out.println("☆☆☆" + name + "是地主☆☆☆");
                } else {
                        System.out.println(name + "的牌为:");
                }
                for (Integer integer : player) {
                        System.out.print(poker.get(integer) + "  ");
                }
                System.out.println();
        }

}

10 个回复

倒序浏览
本帖最后由 愤怒的大飞机 于 2017-1-9 23:14 编辑
KyneZhk 发表于 2017-1-9 23:04
哥们,你是不是264期

快使用双截棍
回复 使用道具 举报
只能看懂一部分,看来需要继续努力
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
厉害,希望以后自己也可以轻松实现
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
回复 使用道具 举报
厉害厉害,
回复 使用道具 举报
有意思,佩服
回复 使用道具 举报
小白表示看不懂   0.0
回复 使用道具 举报
很6 啊,很厉害
回复 使用道具 举报
厉害厉害。。学习下。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马