集合(模拟斗地主发牌)
思路:
* A:创建一个HashMap集合
* B:创建一个ArrayList集合
* C:创建花色数组和点数数组
* D:从0开始往HashMap里面存储编号,并存储对应的牌
* 同时往ArrayList里面存储编号即可。
* E:洗牌(洗的是编号)
* F:发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
* G:看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
输出牌—无序版
package Day18; import java.util.ArrayList; import java.util.Collections; public class PoKe { public static void main(String[] args) { //创建牌盒---集合 ArrayList<String> array = new ArrayList<String>(); //装牌 //定义一个花色数组 String [] colors = {"♠","♣","♥","♦"}; //定义一个点数的数组 String [] number = {"A","2","3","4","5","6","7","8","9","J","Q","K"}; //将牌装入集合array中 //增强for进行循环遍历获取花色字符数组中的每个花色 for(String a : colors){ //遍历点数字符数组获取每个点数 for(String b:number){ //对获取的每个花色和点数进行字符的拼接---并将其添加到集合array中 //字符拼接使用String类中的public String concat(String str)将指定字符串连接到此字符串的结尾。 array.add(a.concat(b)); } } array.add("小王"); array.add("大王"); //输出查看字符中的集合---是否添加上元素 //System.out.println(array); // for(String t: array){ // System.out.println(t); // } //洗牌 //使用Collections中任意置换的方法实现其集合元素的混乱 //public static void shuffle(List<?> list)使用默认随机源对指定列表进行置换。 // 所有置换发生的可能性都是大致相等的。 Collections.shuffle(array); //输出查看集合是否混乱 //System.out.println(array); //看牌 //斗地主三人打牌 //首先创建三个集合用来存储每个人的牌---还有一个集合存储最后三张底牌 ArrayList<String> zhao = new ArrayList<String>(); ArrayList<String> zhu = new ArrayList<String>(); ArrayList<String> wang = new ArrayList<String>(); ArrayList<String> dipai = new ArrayList<String>(); //进行分发牌 //首先遍历array集合 for(int x=0;x<array.size();x++){ //进行底牌的判断---只留最后三张---放在遍历循环的开始,以防添加到别的集合 if(x>= array.size()-3){ //添加最后三张底牌 dipai.add(array.get(x)); } //进行顺序发牌 if(x%3==0){ //三人发牌---这是第一个拿牌的 //如果遍历的array集合的索引的取余是零--就将此处array的索引值添加到zhao集合中 zhao.add(array.get(x)); }else if(x%3==1){ //三人发牌--这是第二个拿牌的 zhu.add(array.get(x)); }else if(x%3==2){ //三人发牌--这是第三个拿牌的 wang.add(array.get(x)); } } //查看牌---此时的查看牌定义一个功能方法--查看任意一个调用功能方法即可 kanpai("赵同刚",zhao); kanpai("朱庆娜",zhu); kanpai("王丽丽",wang); kanpai("底牌",dipai); } //两个明确 //返回值类型----void(任意型) 参数列表--A:给出拿牌人的姓名--B:给出拿牌的集合 public static void kanpai(String name,ArrayList<String> m){ //进行格式的调整 System.out.print(name+":"); //遍历输出集合中的每一个元素 for (String e : m){ System.out.print(e+","); } //每个人的牌在输出时进行换行,以方便查看 System.out.println(); } }