diff --git a/javaSE-day02/src/com/inmind/test07/Test08.java b/javaSE-day02/src/com/inmind/test07/Test08.java new file mode 100644 index 0000000..ac03821 --- /dev/null +++ b/javaSE-day02/src/com/inmind/test07/Test08.java @@ -0,0 +1,83 @@ +package com.inmind.test07; + +import java.util.ArrayList; +import java.util.Collections; + +/* +按照斗地主的规则,完成洗牌发牌的动作。 +具体规则: + +使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。 + +分析: + 1.准备54张牌(花色+数字) + 2.洗牌(打乱顺序) + 3.创建3个集合对象保存每个玩家的牌,创建1个集合保存底牌 + 4.打印集合的内容 + */ +public class Test08 { + public static void main(String[] args) { + //1.准备54张牌(花色+数字) + String[] colors = {"♠", "♥", "♣", "♦"}; + String[] nums = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"}; + + //创建一个集合保存54张牌 + ArrayList pokers = new ArrayList<>(); + //循环的嵌套,拼接出54张牌,保存到集合中 + for (String color : colors) { + for (String num : nums) { + String poker = color + num; + pokers.add(poker); + } + } + pokers.add("小王"); + pokers.add("大王"); + + System.out.println(pokers); + System.out.println(pokers.size()); + + //2.洗牌(打乱顺序) + Collections.shuffle(pokers); + System.out.println("打乱之后:"+pokers); + + //3.创建3个集合对象保存每个玩家的牌,创建1个集合保存底牌 + ArrayList player1 = new ArrayList<>(); + ArrayList player2 = new ArrayList<>(); + ArrayList player3 = new ArrayList<>(); + ArrayList dipai = new ArrayList<>(); + + /* + 按顺序,轮着抓 + 玩家1 0 3 6 index%3 == 0 + 玩家2 1 4 7 index%3 == 1 + 玩家3 2 5 8 index%3 == 2 + + 最后三张牌都给底牌 + */ + + for (int i = 0; i < pokers.size(); i++) { + String poker = pokers.get(i); + //最后三张都给底牌,其他的判断下分别发给我每个玩家 + if (i >= 51) {//最后三张都给底牌 + dipai.add(poker); + } else { + switch (i%3) { + case 0: + player1.add(poker); + break; + case 1: + player2.add(poker); + break; + case 2: + player3.add(poker); + break; + } + } + } + //4.打印集合的内容 + System.out.println("玩家1:"+player1); + System.out.println("玩家2:"+player2); + System.out.println("玩家3:"+player3); + System.out.println("底牌:"+dipai); + } +}