斗地主案例

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();
    }
}
相关推荐
许彰午15 分钟前
44-useRowSet镜像实现
java·低代码·架构
bamboolm42 分钟前
springboot+Ollama整合
java·ollama
深圳市方中禾科技1 小时前
FZH1625 LCD 驱动芯片深度评测与实战指南
算法·led
我不会起名字3221 小时前
一天一道算法题(34):回溯法的经典例题(子集)
java·数据结构·python·算法·golang·深度优先·力扣
Wang's Blog2 小时前
Java框架快速入门: Spring Security+OAuth2之JWT核心概念与实战
java·spring·log4j
Dreams_l2 小时前
死信队列和延迟队列介绍
java·开发语言
Bs_MoneyMagnet3 小时前
基于springboot+vue的生态果园采摘预约系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·毕业设计·计算机毕业设计
麻瓜code3 小时前
【JUC】AQS enq() 自旋入队
java
huang5791473 小时前
哈希算法的抗碰撞机制与安全性增强策略4
算法
Wang's Blog3 小时前
Java框架快速入门: Spring Security+OAuth2之核心角色与授权流程
java·spring·github