//斗地主的步骤:创建编号和牌对对应的map集合,准备牌,洗牌,发牌,排序,从map集合查找,看牌
public class Demo_test {
public static void main(String[] args) {
//创建编号和牌对应的map集合
Map<Integer, String> map = new LinkedHashMap<Integer, String>();
//创建一个数组集合存储54张牌
ArrayList<Integer> list = new ArrayList<>();
int id = 54;
//花色
String[] colors = {"♠","♥","♣","♦"};
//数值
String[] cards = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
//生成54张牌
for (String card : cards) {
for (String color : colors) {
String s = card+color;
map.put(id, s);
list.add(id);
id--;
}
}
//添加大小王
map.put(id, "小王");
list.add(id);
id--;
map.put(id, "大王");
list.add(id);
//洗牌(将编号顺序打乱)
Collections.shuffle(list);
//定义三个玩家和三张底牌
ArrayList<Integer> p1 = new ArrayList<>();
ArrayList<Integer> p2 = new ArrayList<>();
ArrayList<Integer> p3 = new ArrayList<>();
ArrayList<Integer> dp = new ArrayList<>();
//循环去除cards集合中的牌,依次保存到上面集合。
for(int i=0; i<list.size();i++) {
Integer card = list.get(i);
//从第51张牌起留作底牌
if (i>=51) {
dp.add(card);
}
else {
if (i%3==0) {
p1.add(card);
}
else if (i%3==1) {
p2.add(card);
}
else{
p3.add(card);
}
}
}
//对玩家手中的牌进行排序
Collections.sort(p1);
Collections.sort(p2);
Collections.sort(p3);
Collections.sort(dp);
LookupCards(p1,map);
LookupCards(p2,map);
LookupCards(p3,map);
LookupCards(dp,map);
}
private static void LookupCards(ArrayList<Integer> p, Map<Integer, String> map) {
//从map中查询编号对应的牌
for (Integer pai : p) {
String card2 = map.get(pai);
System.out.print(card2+" ");
}
System.out.println();
}
}