集合(模拟斗地主发牌)
思路:
* 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();
}
}


