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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hacker◊紫猫 中级黑马   /  2014-10-6 23:36  /  1037 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

昨天老师留了个模拟斗地主发牌题目,很有意思我来分享下
需求:模拟斗地主发牌。
思路:
                A:买牌
                黑桃A,黑桃2,黑桃3,...黑桃9,黑桃10,黑桃J,黑桃Q,黑桃K
                        红桃...
                        梅花...
                        方块...
                大王,小王
             B:洗牌
                        随机置换
             C:发牌
                        发给三个人
                D:看底牌
                        留三张
*/
public class CollectionsTest {
        public static void main(String[] args) {
                // 买牌
                // 表示花色的数组
                String[] colors = { "黑桃", "红桃", "梅花", "方块" };
                // 表示点数的数组
                String[] numbers = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
                                "J", "Q", "K" };

                // 早一个牌盒
                ArrayList<String> array = new ArrayList<String>();
                array.add("大王");
                array.add("小王");

                // 循环装牌
                for (String c : colors) {
                        for (String n : numbers) {
                                array.add(c.concat(n));
                        }
                }
                // 显示所有牌
                // System.out.println(array);

                // 洗牌
                Collections.shuffle(array);
                // 显示所有牌
                // System.out.println(array);

                // 发牌
                ArrayList<String> linString = new ArrayList<String>();
                ArrayList<String> zhouString = new ArrayList<String>();
                ArrayList<String> meString = new ArrayList<String>();

                // 用普通for
                for (int x = 0; x < array.size() - 3; x++) {
                        if (x % 3 == 0) {
                                linString.add(array.get(x));
                        } else if (x % 3 == 1) {
                                zhouString.add(array.get(x));
                        } else if (x % 3 == 2) {
                                meString.add(array.get(x));
                        }
                }

                // 看牌
                System.out.println("linString:" + linString);
                System.out.println("zhouString:" + zhouString);
                System.out.println("meString:" + meString);

                // 看底牌
                for (int x = array.size() - 3; x < array.size(); x++) {
                        System.out.print(array.get(x) + "  ");
                }
        }
}

2 个回复

正序浏览
伤心啊 没注意Collections中还有个shuffle方法 可以用在有限元素取随机中 之前都是自己写的
回复 使用道具 举报
先学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马