package cn.itcast.Map;
import java.util.*;
//斗地主案例(能顺序看牌)
public class DouDiZhu {
public static void main(String[] args) {
//1 准备牌
//创建Map集合,存储牌的索引和组装好的牌
HashMap<Integer,String> poker=new HashMap<>();
//创建list集合,存放牌的索引
ArrayList pokerIndex=new ArrayList<>();
//定义两个集合存放花色和牌的序号
ArrayList colors=new ArrayList<>();
colors.add(“♥”);
colors.add(“♠”);
colors.add(“♣”);
colors.add(“♦”);
ArrayList numbers=new ArrayList<>();
numbers.add(“2”);
numbers.add(“A”);
numbers.add(“K”);
numbers.add(“Q”);
numbers.add(“J”);
numbers.add(“10”);
numbers.add(“9”);
numbers.add(“8”);
numbers.add(“7”);
numbers.add(“6”);
numbers.add(“5”);
numbers.add(“4”);
numbers.add(“3”);
//把大王和小王存到poker中
//定义一个牌的索引
int index=0;
poker.put(index,“大王”);
pokerIndex.add(index);
index++;
poker.put(index,“小王”);
pokerIndex.add(index);
index++;
//组装牌
for (String number : numbers) {
for (String color : colors) {
poker.put(index,color+number);
pokerIndex.add(index);
index++;
}
}
//2 洗牌
Collections.shuffle(pokerIndex);
//3 发牌
//定义4个集合,存放底牌和三根玩家
ArrayList<Integer> player01=new ArrayList<>();
ArrayList<Integer> player02=new ArrayList<>();
ArrayList<Integer> player03=new ArrayList<>();
ArrayList<Integer> dipai=new ArrayList<>();
for(int i=0;i<pokerIndex.size();i++){
Integer n=pokerIndex.get(i);
if(i>=51)
dipai.add(i);
else if(i%3==0)
player01.add(i);
else if(i%3==1)
player02.add(i);
else if(i%3==2)
player03.add(i);
}
// 4 排序
Collections.sort(player01);
Collections.sort(player02);
Collections.sort(player03);
Collections.sort(dipai);
//看牌
lookPoker("刘德华",poker,player01);
lookPoker("周星驰",poker,player02);
lookPoker("周润发",poker,player03);
lookPoker("底牌",poker,dipai);
}
/*定义一个看牌的函数
参数:玩家姓名
存储牌的poker集合
玩家或底牌的list集合
查表法:
遍历玩家的牌,获取索引
使用索引去map集合查找value值*/
public static void lookPoker(String name,HashMap<Integer,String> poker,ArrayList<Integer> player){
System.out.print(name+": ");
for (Integer key : player) {
System.out.print(poker.get(key)+" ");
}
System.out.println();
}
}
主要是对牌的索引排序,然后查找map集合