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<String> arrayList_hongxin=new ArrayList<>();
ArrayList<String> arrayList_fangkuai=new ArrayList<>();
ArrayList<String> arrayList_meihua=new ArrayList<>();
ArrayList<String> arrayList_heitao=new ArrayList<>();
ArrayList<String> 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<String> 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<Integer> arrayList=new ArrayList<>();
ArrayList<String> arrayList_hongxin=new ArrayList<>();
ArrayList<String> arrayList_fangkuai=new ArrayList<>();
ArrayList<String> arrayList_meihua=new ArrayList<>();
ArrayList<String> arrayList_heitao=new ArrayList<>();
ArrayList<String> 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<String> 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 <arrayList.size() ; 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<String> strings=new ArrayList<>();
ArrayList<String> ends=new ArrayList<>();
ArrayList<String> arrayList_hongxin=new ArrayList<>();
ArrayList<String> arrayList_fangkuai=new ArrayList<>();
ArrayList<String> arrayList_meihua=new ArrayList<>();
ArrayList<String> arrayList_heitao=new ArrayList<>();
ArrayList<String> 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<String> 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<String> 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模拟斗地主发牌
最新推荐文章于 2024-06-09 16:49:12 发布