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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

首先贴代码
package doudizhufapai;

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

/*
* 要求:        模拟斗地主随机发牌
*
* 思路:
*                 1、建立字符串数组存储扑克牌,分为两个字符串数组,花色,数字大小,大小王单独添加至集合
*                 2、将花色与数字大小两两组合创建对象存储至集合中
*                 3、这里我们要用到Collections工具类中的随机置换方法shuffler()对对象进行随机置换
*                 4、建立四个集合,三个集合为接受发牌的对象集合,一个集合为底牌存储集合
*                 5、分别打印思路4中的四个集合
*/
public class SuiJiFaPai {
        public static void main(String[] args) {
                // 建立字符串数组存储扑克牌
                String[] huaSe = { "黑桃", "红桃", "梅花", "方片" };
                String[] shuZiDaXiao = { "A", "2", "3", "4", "5", "6", "7", "8", "9",
                                "10", "J", "Q", "K" };

                // 创建集合
                ArrayList<String> pkp = new ArrayList<String>();

                // 创建并添加元素
                for (int x = 0; x < huaSe.length; x++) {
                        for (int y = 0; y < shuZiDaXiao.length; y++) {
                                pkp.add(huaSe[x] + shuZiDaXiao[y]);
                        }
                }

                // 添加大小王
                pkp.add("大王");
                pkp.add("小王");

                // 调用Collections工具类的洗牌方法,对集合进行随机置换
                Collections.shuffle(pkp);

                // 创建四个对象存储所发的牌和底牌
                ArrayList<String> xie = new ArrayList<String>();
                ArrayList<String> heng = new ArrayList<String>();
                ArrayList<String> xi = new ArrayList<String>();
                ArrayList<String> diPai = new ArrayList<String>();

                // 留三张底牌
                for (int x = 0; x < 3; x++) {
                        diPai.add(pkp.get(x));
                }

                // 将剩下的牌分发给其余三人
                for (int x = 3; x < pkp.size(); x++) {
                        if (x % 3 == 0) {
                                xie.add(pkp.get(x));
                        } else if (x % 3 == 1) {
                                heng.add(pkp.get(x));
                        } else if (x % 3 == 2) {
                                xi.add(pkp.get(x));
                        }
                }

                // 打印底牌
                System.out.println("底牌有这些:");
                System.out.println(diPai);

                // 打印三人的手牌
                System.out.println("xie的牌有:");
                System.out.println(xie);
                System.out.println("heng的牌有:");
                System.out.println(heng);
                System.out.println("xi的牌有:");
                System.out.println(xi);
        }
}

效果图如下:
第一次发牌


第二次发牌


8 个回复

倒序浏览
楼主厉害
回复 使用道具 举报

一起学习,一起进步
回复 使用道具 举报
格式很好看,谢谢!
回复 使用道具 举报
saghir 发表于 2015-4-25 12:36
格式很好看,谢谢!

谢谢,一起加油!
回复 使用道具 举报
楼主再写个升级发牌的给我们看吧
回复 使用道具 举报
fanxia_2007 发表于 2015-4-25 22:25
楼主再写个升级发牌的给我们看吧

代码如下:
package doudizhufapai;

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

/*
* 要求:        模拟升级随机发牌
*
* 思路:
*                 1、建立字符串数组存储扑克牌,分为两个字符串数组,花色,数字大小,大小王单独添加至集合
*                 2、将花色与数字大小两两组合创建对象存储至集合中
*                 3、这里我们要用到Collections工具类中的随机置换方法shuffler()对对象进行随机置换
*                 4、建立五个集合,四个集合为接受发牌的对象集合,一个集合为底牌存储集合
*                 5、分别打印思路4中的五个集合
*/
public class ShenJiFaPai {
        public static void main(String[] args) {
                // 建立字符串数组存储扑克牌
                String[] huaSe = { "黑桃", "红桃", "梅花", "方片" };
                String[] shuZiDaXiao = { "A", "2", "3", "4", "5", "6", "7", "8", "9",
                                "10", "J", "Q", "K", "A", "2", "3", "4", "5", "6", "7", "8",
                                "9", "10", "J", "Q", "K" };

                // 创建集合
                ArrayList<String> pkp = new ArrayList<String>();

                // 创建并添加元素
                for (int x = 0; x < huaSe.length; x++) {
                        for (int y = 0; y < shuZiDaXiao.length; y++) {
                                pkp.add(huaSe[x] + shuZiDaXiao[y]);
                        }
                }

                // 添加大小王
                pkp.add("大王");
                pkp.add("小王");
                pkp.add("大王");
                pkp.add("小王");

                // 调用Collections工具类的洗牌方法,对集合进行随机置换
                Collections.shuffle(pkp);

                // 创建四个对象存储所发的牌和底牌
                ArrayList<String> dong = new ArrayList<String>();
                ArrayList<String> xi = new ArrayList<String>();
                ArrayList<String> nan = new ArrayList<String>();
                ArrayList<String> bei = new ArrayList<String>();
                ArrayList<String> diPai = new ArrayList<String>();

                // 留八张底牌
                for (int x = 0; x < 8; x++) {
                        diPai.add(pkp.get(x));
                }

                // 将剩下的牌分发给其余三人
                for (int x = 8; x < pkp.size(); x++) {
                        if (x % 4 == 0) {
                                dong.add(pkp.get(x));
                        } else if (x % 4 == 1) {
                                xi.add(pkp.get(x));
                        } else if (x % 4 == 2) {
                                nan.add(pkp.get(x));
                        } else if (x % 4 == 3) {
                                bei.add(pkp.get(x));
                        }
                }

                // 打印底牌
                System.out.println("底牌有这些:");
                System.out.println(diPai);

                // 打印三人的手牌
                System.out.println("dong的牌有:");
                System.out.println(dong);
                System.out.println("xi的牌有:");
                System.out.println(xi);
                System.out.println("nan的牌有:");
                System.out.println(nan);
                System.out.println("bei的牌有:");
                System.out.println(bei);
        }

}

效果图如下

思路是一样的
只不过把一副牌变为两副牌,三个收牌集合改为四个,底牌数改为八张
回复 使用道具 举报
lai19 中级黑马 2015-4-25 22:36:47
8#
刚刚学完
回复 使用道具 举报

我也是,学完,当练习代码敲,完了发帖再收点黑马币换技术分
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马