java实现斗地主发牌

/**
 * @author shuai1.liu
 * @create 2018-09-21 13:36
 * @desc
 **/
package cn.com.callback;


import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Random;

public class Main {

    public static void main (String [] args){
        System.out.println(System.currentTimeMillis());
        List<List<String>> meiPaiPeopleList = initPeople(); //未发完牌的人
        List<List<String>> youPaiPeopleList = new ArrayList<>(); //有牌的人的集合
        //初始化总牌数
        List<List<String>> pukeList = initPuke();

        Random random = new Random();
        for (int i = 0; i < 51; i++) {
            int who = random.nextInt(meiPaiPeopleList.size());//发给谁
            int hang = random.nextInt(pukeList.size());  //发哪种花色的牌
            int lie = random.nextInt(pukeList.get(hang).size());  // 发花色的几号牌

            List<String> people = meiPaiPeopleList.get(who);
            List<String> huase = pukeList.get(hang);
            people.add(huase.get(lie));
            huase.remove(lie);

            if (people.size() == 17){
                youPaiPeopleList.add(people);
                meiPaiPeopleList.remove(people);
            }
            if (huase.size() == 0){
                pukeList.remove(huase);
            }
        }
        System.out.println(System.currentTimeMillis());
        for (int i = 0; i < youPaiPeopleList.size(); i++) {
            List<String> list =  youPaiPeopleList.get(i);
            list.sort(new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    int i1 = Integer.valueOf(o1);
                    int i2 = Integer.valueOf(o2);
                    if (i1 > i2){
                        return 0;
                    }else {
                        return -1;
                    }

                }
            });
            for (int j = 0; j < list.size(); j++) {
                System.out.print(list.get(j)+",");
            }
            System.out.println();

        }

        for (int i = 0; i < pukeList.size(); i++) {
            List<String> list =  pukeList.get(i);
            for (int j = 0; j < list.size(); j++) {
                String s =  list.get(j);
                System.out.print(s+",");
            }
            System.out.println();
        }

        System.out.println(System.currentTimeMillis());
    }

    /**
     * 初始化所有人
     * @return
     */
    public static List<List<String>> initPeople(){
        List<List<String>> allPeopleList = new ArrayList<>();
        List<String> zhangsan = new ArrayList<>();
        List<String> lisi = new ArrayList<>();
        List<String> wangwu = new ArrayList<>();
        allPeopleList.add(zhangsan);
        allPeopleList.add(lisi);
        allPeopleList.add(wangwu);
        return allPeopleList;
    }

    /**
     * 初始化总牌数
     * @return
     */
    public static List<List<String>> initPuke(){
        List<List<String>> pukeList = new ArrayList<>();
        List<String> heitao = new ArrayList<>();
        List<String> hongtao = new ArrayList<>();
        List<String> meihua = new ArrayList<>();
        List<String> fangpian = new ArrayList<>();
        for (int i = 0; i < 14; i++) {
            String aaa = i+"";
            heitao.add(aaa);
            hongtao.add(aaa);
            meihua.add(aaa);
            fangpian.add(aaa);
        }
        meihua.remove(13);
        fangpian.remove(13);
        pukeList.add(heitao);
        pukeList.add(hongtao);
        pukeList.add(meihua);
        pukeList.add(fangpian);
        return pukeList;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值