斗地主集合综合案例
- 介绍:按照斗地主的规则,完成洗牌发牌的动作
- 具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张,最后三张做底牌。
案例分析:
1.准备牌
- 牌可以设计成一个ArrayList,每个字符串为一张牌。
- 每张牌由花色数字两部分组成,我们可以使用花色集合和数字集合迭代完成一张牌的组装
- 牌由Collection类的shuffle方法进行随机排序
2.发牌 - 将每个人以及底牌设计为ArrayList,将最后3张牌存放于底牌,剩余牌对3取模依次发牌
3.看牌 - 直接打印每个集合
public class Demo01 {
public static void main(String[] args) {
/*1.准备牌
* 2.发牌
* 3.看牌*/
//定义一个集合储存所有牌
ArrayList<String> poker = new ArrayList<>();
//再定义两个数组储存花色,再嵌套遍历,导入poker集合
String[] colors = {"♡", "♤", "♢", "♣"};
String[] nums = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
for (String color : colors) {
for (String num : nums) {
poker.add(color + num);
}
}
poker.add("大王");
poker.add("小王");
// System.out.println(poker);
//发牌使用Collections中的方法打乱,再%3对四个集合进行发牌
// static void shuffle(List<?> list) 使用默认随机源对指定列表进行置换。
Collections.shuffle(poker);
// System.out.println(poker);
//定义四个集合,三个玩家,一个存放底牌
ArrayList<String> player1 = new ArrayList<>();
ArrayList<String> player2 = new ArrayList<>();
ArrayList<String> player3 = new ArrayList<>();
ArrayList<String> DiPai = new ArrayList<>();
for (int i = 0; i < poker.size(); i++) {
String s = poker.get(i);
if (i >= 51){
DiPai.add(s);
}else if (i%3==0){
player1.add(s);
}else if (i%3==1){
player2.add(s);
}else if (i%3==2){
player3.add(s);
}
}
System.out.println("小王:"+player1);
System.out.println("小红:"+player2);
System.out.println("小华:"+player3);
System.out.println("底牌:"+DiPai);
}
}