其他分享
首页 > 其他分享> > 斗地主案例的需求分析和代码实现

斗地主案例的需求分析和代码实现

作者:互联网

斗地主案例的需求分析

按照斗地主规则,完成洗牌发牌的动作。

具体规则:

使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

1、准备牌,将54张牌存储到一个集合中。

  特殊牌:大王、小王

  分别定义数组或者集合存储四种花色以及排的序号

  使用循环嵌套遍历这两个数组或者集合,使用字符串拼接再存储到新的数组或者集合中。

  最后再添加大王、小王

2、洗牌

  可以使用集合工具类的Collections的shuffle( )方法,会随机打乱集合中元素的顺序

3、发牌

  要求:1人17张牌,最后剩余3张作为底牌,一人一张轮流发牌,让集合的索引%3;

  定义4个集合,用来存储3个玩家的牌和底牌

  索引%3为0时添加到第一个集合

  索引%3为1时添加到第二个集合

  索引%3为2时添加到第三个集合

  当索引大于等于51时,添加到底牌集合

4、看牌

  直接打印集合,或者遍历存储玩家和底牌的集合

 

斗地主案例的代码实现:

public class demg_09 {
    public static void main(String[] args) {
        //准备洗牌
        List<String> list = new ArrayList<>();
        String[] colors = {"♠","♥","♣","♦"};
        String[] numbers = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        //先把大王小王存储到集合中
        list.add("大王");
        list.add("小王");
        //循环嵌套遍历两个数组,组装52张牌
        for (String number : numbers) {
            for (String color : colors) {
                //把组装好的牌存储到集合当中
                list.add(color+number);
            }
        }

        /*
            洗牌
           使用集合的工具类Collections中的方法
         */
        Collections.shuffle(list);

        /*
            发牌
            定义四个集合,存储玩家的牌和底牌
         */
        ArrayList<String> arrayList1 = new ArrayList<>();
        ArrayList<String> arrayList2 = new ArrayList<>();
        ArrayList<String> arrayList3 = new ArrayList<>();
        ArrayList<String> arrayList4 = new ArrayList<>();
        /*
            遍历集合,获取每一张牌
            使用集合的索引%3给三个玩家轮流发牌
            剩余:3张牌给底牌
            注意:
                先判断底牌(i>51),否则牌就发没了
         */
        for (int i = 0; i <list.size() ; i++) {
            //获取每一张牌
            String p = list.get(i);
            //轮流发牌
            if (i>=51){
                //改底层发牌
                arrayList4.add(p);
            }else if (i%3==0){
                //给玩家1发牌
                arrayList1.add(p);
            }else if (i%3==1){
                //给玩家2发牌
                arrayList2.add(p);
            }else if (i%3==2){
                //给玩家3发牌
                arrayList3.add(p);
            }
        }
        //看牌
        System.out.println("兵王强"+arrayList1);
        System.out.println("空军中尉"+arrayList2);
        System.out.println("空军上尉"+arrayList3);
        System.out.println("底牌"+arrayList4);
    }
}

 

标签:底牌,斗地主,代码,玩家,案例,add,ArrayList,集合,发牌
来源: https://www.cnblogs.com/aqhk/p/16450808.html