Java斗地主

package demo;

import java.util.*;

public class DouDiZhu {
    public static void main(String[] args) {
        //建立m1集合存放所有的扑克牌
        Map<Integer, String> m1 = new HashMap<>();
        //建立l1集合存放所有的扑克牌编号
        List<Integer> l1 = new ArrayList<>();
        //建立s1数组存放扑克牌花色
        String[] s1 = {"♦", "♣", "♥", "♠"};
        //建立s2数组存放扑克牌点数
        String[] s2 = {"3", "4", "5", "6", "7", "8", "9", "X", "J", "Q", "K", "A", "2"};
        //i1为每张牌的编号
        int i1 = 0;
        //通过增强for循环将每一张扑克牌的花色和点数进行拼接
        for (String s3 : s1) {
            for (String s4 : s2) {
                //s5是每一张拼接后的扑克牌
                String s5 = s3 + s4;
                //将编号存入l1集合中
                l1.add(i1);
                //将编号和扑克牌存放入m1集合中
                m1.put(i1, s5);
                i1++;
            }
        }
        //向l1集合添加小王的编号
        l1.add(i1);
        向l1集合添加小王的编号和扑克牌
        m1.put(i1, "s🃏");
        i1++;
        //向l1集合添加大王的编号
        l1.add(i1);
        //向l1集合添加大王的编号和扑克牌
        m1.put(i1, "B🃏");
        //洗牌
        Collections.shuffle(l1);
        //d集合存放底牌编号
        List<Integer> d = new ArrayList<>();
        //A集合存放玩家A的牌编号
        List<Integer> A = new ArrayList<>();
        //B集合存放玩家B的牌编号
        List<Integer> B = new ArrayList<>();
        //C集合存放玩家C的牌编号
        List<Integer> C = new ArrayList<>();
        //通过for循环和if语句进行发牌
        for (int i2 = 0; i2 < l1.size(); i2++) {
            //i3是通过索引i2找到l1集合中的对应编号
            Integer i3 = l1.get(i2);
            if (i2 >= l1.size() - 3) {   //将最后三张作为底牌
                //将底牌存放入d集合中
                d.add(i3);
            } else if (i2 % 3 == 0) {     //将索引i2取余后余数为0的非底牌发给A玩家
                //将索引i2取余后余数为0的非底牌存放入A集合中
                A.add(i3);
            } else if (i2 % 3 == 1) {     //将索引i2取余后余数为1的非底牌发给B玩家
                //将索引i2取余后余数为1的非底牌存放入B集合中
                B.add(i3);
            } else {                     //将其余(索引i2取余后余数为2)的非底牌发给C玩家
                //将其余(索引i2取余后余数为2)的非底牌存放入C集合中
                C.add(i3);
            }
        }
        //调用printPuke方法打印底牌
        printPuke(d, m1);
        //调用printPuke方法打印玩家A的扑克牌
        printPuke(A, m1);
        //调用printPuke方法打印玩家B的扑克牌
        printPuke(B, m1);
        //调用printPuke方法打印玩家C的扑克牌
        printPuke(C, m1);
    }

    //创建打印根据集合中的编号获取到该集合中所有对应的扑克牌的方法
    public static void printPuke(List<Integer> list, Map<Integer, String> map) {
        //将集合中的编号进行升序排列
        Collections.sort(list);
        //创建容器sb1
        StringBuilder sb1 = new StringBuilder();
        //通过增强for循环遍历集合
        for (int i : list) {
            //s1是根据集合中的编号获取到对应的扑克牌
            String s1 = map.get(i);
            //将获取到的扑克牌存放入sb1容器中并用空格符隔开
            sb1.append(s1).append(" ");
        }
        //将sb1容器转换为字符串形式输出
        String s2 = sb1.toString();
        //打印去除首尾空格的字符串s2
        System.out.println(s2.trim());
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值