斗地主游戏共有三名玩家参与,首先将54张牌的顺序打乱,每人轮流摸牌,剩余三张做底牌。54张牌四种花色。
此案例只有一个Test类
Test测试类
package anli06_4;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
/*
斗地主发牌器
*/
public class Test {
public static void main(String[] args) {
//1.准备扑克牌
HashMap<Integer,String>map=new HashMap<>();
ArrayList<Integer>list =new ArrayList<>();
map.put(1,"大王");
map.put(2,"小王");
list.add(1);
list.add(2);
String[] numbers={"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
String[] colors={"♠","♥","♣","♦"};
int index=3;
for (String number:numbers){
for (String color:colors){
map.put(index,number+color);
list.add(index);
index++;
}
}
//2.洗牌
Collections.shuffle(list);
//3.发牌
ArrayList<Integer> diPai=new ArrayList<>();
ArrayList<Integer> player1=new ArrayList<>();
ArrayList<Integer> player2=new ArrayList<>();
ArrayList<Integer> player3=new ArrayList<>();
for (int i=0;i<list.size();i++){
if (i>=51){
diPai.add(list.get(i));
}else if (i%3==0){
player1.add(list.get(i));
}else if (i%3==1){
player2.add(list.get(i));
}else {
player3.add(list.get(i));
}
}
//4.排序
Collections.sort(diPai);
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
//5.看牌
look("赌神",player1,map);
look("赌侠",player2,map);
look("赌圣",player3,map);
look("底牌",diPai,map);
}
private static void look(String name, ArrayList<Integer> list, HashMap<Integer, String> map) {
System.out.print(name+":");
for (Integer number:list){
System.out.print(map.get(number)+" ");
}
System.out.println();
}
}
结果展示
每次的发牌都是随机的