斗地主案例
案例介绍
按照斗地主的规则 完成洗牌发牌的动作
具体规则:
使用54张牌打乱顺序 三个玩家参与游戏,三个人交替摸牌,每人17张牌,最后三张留作底牌
案例分析
- 准备牌
牌可以设置为一个ArrayList<String>,每个字符串为一张牌
张牌由花色数字两部分组成 我们可以使用花色集合与数字集合嵌套迭代完成每张牌的组装
牌由Collections类的shuffle方法进行随机排序
- 发牌
将每个人以及底牌设计为ArrayList<String>,将最后3张牌直接存于底牌 剩余牌通过对3取模依次发牌
- 看牌
直接打印每个集合
代码:
public static void main(String[] args) {
    //创建一个集合用于存储扑克牌
    ArrayList<String> list = new ArrayList<>();
    //定义两个数组存放花色和牌的点数
    String[] colors={"♠","♣","♥","♦"};
    String[] numbers={"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
    //将两张特殊的牌放入集合
    list.add("大王");
    list.add("小王");
    //使用嵌套增强for循环将花色和点数存入集合
    for (String color : colors) {
        for (String number : numbers) {
            list.add(color+number);
        }
    }
    //使用Collections集合工具类里的shuffle进行洗牌
    Collections.shuffle(list);
    //创建四个集合 分别是第一个人、第二个人、第三个人、底牌
    ArrayList<String> person1 = new ArrayList<>();
    ArrayList<String> person2 = new ArrayList<>();
    ArrayList<String> person3 = new ArrayList<>();
    ArrayList<String> cards = new ArrayList<>();
    //使用for进行遍历添加集合
    for (int i = 0; i < list.size(); i++) {
        if (i>=51){
            //给底牌进行发牌
            cards.add(list.get(i));
        }else if (i%3==0){
            //给底牌进行发牌
            person1.add(list.get(i));
        }else if (i%3==1){
            //给底牌进行发牌
            person2.add(list.get(i));
        }else if (i%3==2){
            //给底牌进行发牌
            person3.add(list.get(i));
        }
    }
    //查看所有人的牌
    System.out.println("张三:"+person1);
    System.out.println("李四:"+person2);
    System.out.println("王五:"+person3);
    System.out.println("底牌:"+cards);
}
 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号