Java模拟斗地主发牌

package com.sanmao13;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Random;
public class Test {
    public static void main(String[] args) {
        System.out.println("模拟斗地主发牌");
        System.out.println("方法一(调用Collections.shuffle())");
        fapai();
        System.out.println("---------------------------------------------------------");
        System.out.println();
        System.out.println("方法二(自定义随机算法)");
        fanpai2();
        System.out.println();
        System.out.println("方法二(利用List特性)");
        fangfa3();

    }
    public static void fapai(){
        ArrayList arrayList_hongxin=new ArrayList<>();
        ArrayList arrayList_fangkuai=new ArrayList<>();
        ArrayList arrayList_meihua=new ArrayList<>();
        ArrayList arrayList_heitao=new ArrayList<>();
        ArrayList arrayList_wang=new ArrayList<>();
        arrayList_wang.add("大王 ");
        arrayList_wang.add("小王 ");
        for (int i = 1; i <= 13; i++) {
            arrayList_heitao.add("黑桃"+i);
            arrayList_meihua.add("梅花"+i);
            arrayList_fangkuai.add("方块"+i);
            arrayList_hongxin.add("红心"+i);
        }
        ArrayList pai=new ArrayList<>();
        pai.addAll(arrayList_fangkuai);
        pai.addAll(arrayList_heitao);
        pai.addAll(arrayList_hongxin);
        pai.addAll(arrayList_meihua);
        pai.addAll(arrayList_wang);

        Collections.shuffle(pai);
        for (int i = 1; i <= 3; i++) {
            System.out.print("玩家"+i+":");
            for (int j = 1; j <=17 ; j++) {
                if (i==1&&j==1)
                    System.out.print(pai.get(0)+'\t');
                else
                    System.out.print(pai.get((i-1)*17+j)+'\t');
            }
            System.out.println();
        }
        System.out.print("底牌:");
        System.out.println(pai.get(51)+'\t'+pai.get(52)+'\t'+pai.get(53));
    }
    public static void fanpai2(){
        ArrayList arrayList=new ArrayList<>();
        ArrayList arrayList_hongxin=new ArrayList<>();
        ArrayList arrayList_fangkuai=new ArrayList<>();
        ArrayList arrayList_meihua=new ArrayList<>();
        ArrayList arrayList_heitao=new ArrayList<>();
        ArrayList arrayList_wang=new ArrayList<>();
        arrayList_wang.add("大王 ");
        arrayList_wang.add("小王 ");
        for (int i = 1; i <= 13; i++) {
            arrayList_heitao.add("黑桃"+i);
            arrayList_meihua.add("梅花"+i);
            arrayList_fangkuai.add("方块"+i);
            arrayList_hongxin.add("红心"+i);
        }
        ArrayList pai=new ArrayList<>();
        pai.addAll(arrayList_fangkuai);
        pai.addAll(arrayList_heitao);
        pai.addAll(arrayList_hongxin);
        pai.addAll(arrayList_meihua);
        pai.addAll(arrayList_wang);

        Collections.shuffle(pai);
        while (arrayList.size()<54){
            boolean yes=false;
            int x=(int)(Math.random()*54);
            int i ;
            for (i = 0; i if(x==arrayList.get(i)) {
                    yes=true;
                    break;
                }
            }
            if (yes)
                continue;
            else
                arrayList.add(x);
        }
        for (int i = 1; i <= 3; i++) {
            System.out.print("玩家"+i+":");
            for (int j = 1; j <=17 ; j++) {
                if (i==1&&j==1)
                    System.out.print(pai.get(arrayList.get(0))+'\t');
                else
                    System.out.print(pai.get(arrayList.get((i-1)*17+j))+'\t');
            }
            System.out.println();
        }
        System.out.print("底牌:");
        System.out.println(pai.get(arrayList.get(51))+'\t'+pai.get(arrayList.get(52))+'\t'+pai.get(arrayList.get(53)));
    }
    public static void fangfa3(){
        ArrayList strings=new ArrayList<>();
        ArrayList ends=new ArrayList<>();
        ArrayList arrayList_hongxin=new ArrayList<>();
        ArrayList arrayList_fangkuai=new ArrayList<>();
        ArrayList arrayList_meihua=new ArrayList<>();
        ArrayList arrayList_heitao=new ArrayList<>();
        ArrayList arrayList_wang=new ArrayList<>();
        arrayList_wang.add("大王 ");
        arrayList_wang.add("小王 ");
        for (int i = 1; i <= 13; i++) {
            arrayList_heitao.add("黑桃"+i);
            arrayList_meihua.add("梅花"+i);
            arrayList_fangkuai.add("方块"+i);
            arrayList_hongxin.add("红心"+i);
        }
        ArrayList pai=new ArrayList<>();
        pai.addAll(arrayList_fangkuai);
        pai.addAll(arrayList_heitao);
        pai.addAll(arrayList_hongxin);
        pai.addAll(arrayList_meihua);
        pai.addAll(arrayList_wang);
        for (int i = 0; i <54 ; i++) {
            strings.add(String.valueOf(i));
        }
        ArrayList stringss=new ArrayList<>();
        Random rnd=new Random();
        for (int i = 0; i <54 ; i++) {
            int k=rnd.nextInt(strings.size());//[0,54)
            ends.add(strings.get(k));
            strings.remove(k);
        }
        for (int i = 1; i <= 3; i++) {
            System.out.print("玩家"+i+":");
            for (int j = 1; j <=17 ; j++) {
                if (i==1&&j==1)
                    System.out.print(pai.get(Integer.parseInt(ends.get(0)))+'\t');
                else
                    System.out.print(pai.get(Integer.parseInt(ends.get((i-1)*17+j)))+'\t');
            }
            System.out.println();
        }
        System.out.print("底牌:");
        System.out.println(pai.get(Integer.parseInt(ends.get(51)))+'\t'+pai.get(Integer.parseInt(ends.get(52)))
                +'\t'+pai.get(Integer.parseInt(ends.get(53))));

    }
}

你可能感兴趣的:(Java模拟斗地主发牌)