斗地主案例

1.题目要求

2.题目解析

复制代码
public Card(String number, String color, int size) {
        this.number = number;
        this.color = color;
        this.size = size;
    }

    @Override
    public String toString() {
        return color + number;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public Card() {
    }
}
复制代码
public class Room {
    //创建一副牌
    private List<Card> allCards = new ArrayList<>();

    public Room(){
        //做出54张牌,存入到集合allCards
        //a.点数:个数确定了,类型确定
        String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        //b.花色:个数确定了,类型确定
        String[] colors = {"♠", "♥", "♣", "♦"};
        //每张牌的大小
        int size = 0;
        //c.遍历点数,再遍历花色,组织牌
        for (String number : numbers){
            size++;
            for (String color : colors){
                //得到一张牌
                Card c = new Card(number,color,size);
                allCards.add(c);
            }
        }
       //大小王
        Card c1 = new Card("",  "🃏" , ++size);
        Card c2 = new Card("", "👲" , ++size);
        Collections.addAll(allCards,c1,c2);
        System.out.println("新牌:"+allCards);
    }
    public void start(){
        //1.洗牌
        Collections.shuffle(allCards);
        System.out.println("洗牌后:"+allCards);
        //2.发牌,首先定义三个玩家
        List<Card> xixi = new ArrayList<>();
        List<Card> xinxin = new ArrayList<>();
        List<Card> lili = new ArrayList<>();
        for (int i = 0; i < allCards.size()-3; i++) {
            Card c = allCards.get(i);
            if (i%3 == 0) {
             xixi.add(c);
            }else if(i%3 == 1){
                xinxin.add(c);
            }else if (i % 3== 2) {
                lili.add(c);
            }
        }

        // 3、对3个玩家的牌进行排序
        sortCards(xixi);
        sortCards(xinxin);
        sortCards(lili);

        //4.看牌
        System.out.println("嘻嘻:"+ xixi);
        System.out.println("星星:"+xinxin);
        System.out.println("理理:"+lili);

        //5.地主牌获取
        List<Card> lastThreeCards = allCards.subList(allCards.size()-3,allCards.size());
        System.out.println("地主牌:"+lastThreeCards);

        xixi.addAll(lastThreeCards);
          sortCards(xinxin);
        System.out.println("星星是地主:"+xinxin);

    }
    //排序
    private void sortCards(List<Card> cards){
        Collections.sort(cards, new Comparator<Card>() {
            @Override
            public int compare(Card o1, Card o2) {
                return o1.getSize()-o2.getSize();
            }
        });
    }
    //排序对3个玩家的牌进行排序
}
复制代码
public class Testcard {
    public static void main(String[] args) {
        Room m = new Room();
        m.start();
    }
}
相关推荐
程序员小八7771 小时前
Java 快速转 Go
java·python·golang
职场的momo2 小时前
11个后端与AI岗位同时开放:Java、网关、推理优化怎么匹配
java·开发语言·人工智能
罗超驿2 小时前
SpringMVC 请求参数接收详解|单个参数、多参数、对象参数、@RequestParam参数重命名
java·后端·postman·javaee
土司大王2 小时前
LeetCode hot100——两两交换链表中的节点
算法·leetcode·职场和发展
2 小时前
数据结构第一课:复杂度解析
数据结构
古法安卓3 小时前
Android-epoll原理详解
android·java·android studio
大熊背3 小时前
树莓派IspPipeline LSC模块原理详解
算法·lsc·isppipeline·mesh lsc
fireworks993 小时前
接口鉴权(401与403)
java·后端
wear工程师3 小时前
线程池里的异常去哪了?execute 和 submit 不是一回事
java
孔明click334 小时前
别人绕过我的网关直接调用资源服务怎么办?使用 Sa-Token 解决:网关转发鉴权、RPC调用鉴权
java·sa-token·springboot·权限·权限认证