斗地主(只完成发牌,看牌)

发布于:2022-07-26 ⋅ 阅读:(302) ⋅ 点赞:(0)
import java.util.ArrayList;
import java.util.Collections;
/*
按照斗地主的规则,完成洗牌,发牌的操作
使用54张牌,打乱顺序,3个玩家参与游戏,三人交替摸牌,每人17张,最后三张留底
1.准备牌,存储到集合中
    特殊的,大王,小王
    52张,定义一个数组或集合:存储 花色:♠ ♥ ♣ ♦
    再来一个集合  2,A,K...3
    两个集合循环遍历  组合成  ♠2  ♠A ...
2.洗牌
    Collections.shuffle() 把集合的顺序打乱
3.发牌
    每人17张,3张底牌   索引(0-53) % 3
    定义4个集合,3个人,1个底牌
    i % 3 == 0  给第一个人发牌
    i % 3 == 1  给第二个人发牌
    i % 3 == 2  给第三个人发牌
    i >= 51 时,不发了,三张留底
4.看牌
    打印集合
 */
public class DouDiZhu {
    public static void main(String[] args) {
        pai();
    }

    private static void pai() {
        //准备牌
        //list 总共的54张牌
        ArrayList<String> list = new ArrayList<>();  //集合0:大王,小王,以及花色和数字组合的牌
        list.add("大王");
        list.add("小王");
        System.out.println(list);

        ArrayList<String> list1 = new ArrayList<>();  //花色集合:♠ ♥ ♣ ♦;
        list1.add("♠");list1.add("♥");list1.add("♣");list1.add("♦");
        System.out.println(list1);

        ArrayList<String> list2 = new ArrayList<>();  //数字集合:2,A,K...3
        list2.add("A");list2.add("2");list2.add("3");list2.add("4");list2.add("5");
        list2.add("6");list2.add("7");list2.add("8");list2.add("9");list2.add("10");
        list2.add("J");list2.add("Q");list2.add("K");
        System.out.println(list2);

        String zuhe ;  //两个集合循环遍历  组合成  ♠2  ♠A ...
        for (int i = 0; i < list1.size(); i++) {
            for (int j = 0; j < list2.size(); j++) {
                zuhe = list1.get(i) + list2.get(j);
                list.add(zuhe);  //此时的list里有了大王,小王和组合好的牌
                //System.out.println(list);
            }
        }

        //洗牌   Collections.shuffle()
         Collections.shuffle(list);  //对list里的54张牌进行洗牌

        //发牌
        ArrayList<String> player1 = new ArrayList<>();  //玩家1
        ArrayList<String> player2 = new ArrayList<>();  //玩家2
        ArrayList<String> player3 = new ArrayList<>();  //玩家3
        ArrayList<String> dipai = new ArrayList<>();  //底牌
        System.out.println(list.size());  //查看list里是不是放了54张牌
        
        for (int i = 0; i < list.size(); i++) {
            String pai = list.get(i);
            if (i >= 51) {  //i >= 51 时,取出3张底牌
                dipai.add(pai);
            } else if (i % 3 == 0) {  //i % 3 == 0  给第一个人发牌
                player1.add(pai);
            } else if (i % 3 == 1) {  //i % 3 == 1  给第二个人发牌
                player2.add(pai);
            } else if (i % 3 == 2) {  //i % 3 == 2  给第三个人发牌
                player3.add(pai);
            }
        }

        //看牌
        System.out.println("白艳军" + player1);
        System.out.println("王黎明" + player2);
        System.out.println("郭 勇" + player3);
        System.out.println("底牌" + dipai);
    }
}

网站公告

今日签到

点亮在社区的每一天
去签到