零、所涉及方法
1、List集合
2、Map集合
3、增强for
4、Collection(shuffle,sort)
一、准备牌
1、特殊牌:大王,小王
2、52张牌:循环嵌套遍历两个集合组装52张牌
3、将64张牌存储到Map集合中(通过Map集合的key值访问所有的牌)
List<String> colors = List.of("♠", "♣", "♦", "♥");
List<String> numbers = List.of("2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");
HashMap<Integer,String> map=new HashMap<>();
int index=0;
for (String color : colors) {
for (String number : numbers) {
map.put(index,color+number);
index++;
}
}map.put(52,"大王");
map.put(53,"小王");
二、洗牌
因为我们通过访问牌的index(key值),所以洗牌可以调用Collections父类的shuffle(打乱集合中元素的顺序,且每次顺序都不一样)方法进行洗牌
首先我们创建一个存储index(key)的集合
ArrayList<Integer> list=new ArrayList<>();
for (int i = 0; i < 54; i++) {
list.add(i);
}
调用shuffles方法(因为shuffle是静态方法所以我们通过调用类名来调用)
Collections.shuffle(list);
三、发牌(一张一张发牌)
一共有54张牌
我们通过对54对3取余 ,以获得三种情况分别是
余数为0-----一号玩家
余数为2-----二号玩家
余数为3-----三号玩家
当只剩下三张牌时,停止发牌作为底牌
首先创建四个集合(三个玩家一个存储底牌)
ArrayList<Integer> player1=new ArrayList<>();
ArrayList<Integer> player2=new ArrayList<>();
ArrayList<Integer> player3=new ArrayList<>();
ArrayList<Integer> dipai=new ArrayList<>();
开始发牌if语句套for循环
for (int i = 0; i < list.size(); i++) {
if(i<51){
if(i%3==0){
player1.add(list.get(i));
}
if(i%3==1){
player2.add(list.get(i));
}
if(i%3==2){
player3.add(list.get(i));
}
}else{
dipai.add(list.get(i));
}
}
此时我们可以通过调用size()方法判断发牌是否成功
System.out.println(player1.size());
System.out.println(player2.size());
System.out.println(player3.size());
System.out.println(dipai.size());
发牌成功
四、理牌
通过索引来调用牌的好处就在于可以调用Collections的sort方法进行洗牌
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
Collections.sort(dipai);
五、看牌
通过增强for看牌
System.out.print("玩家1:");
for (Integer i : player1) {
System.out.print(map.get(i)+" ");
}
System.out.println();
System.out.print("玩家2:");
for (Integer i : player2) {
System.out.print(map.get(i)+" ");
}
System.out.println();
System.out.print("玩家3:");
for (Integer i : player3) {
System.out.print(map.get(i)+" ");
}
System.out.println();
System.out.print("底牌:");
for (Integer i : dipai) {
System.out.print(map.get(i)+" ");
}
多次运行测试功能是否实现