斗地主案例

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();
    }
}
相关推荐
朝朝辞暮i17 分钟前
C++ 第 39 章: 阶段性总复习——类、对象、构造、继承、this、指针与智能指针
开发语言·c++·算法·ros2
cpolar技术支持27 分钟前
Spring Boot 接口本地正常,异地前端却报跨域?用 cpolar 跑通 CORS 预检与白名单
java·springboot·cpolar·前后端分离·cors
wuminyu30 分钟前
Virtual Thread重投递至ForkJoinPool任务队列过程解析
java·linux·c语言·jvm·c++
垆边人似月.30 分钟前
华为题:污染水域
算法
小蒜学长39 分钟前
在线保险服务与管理平台的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·服务平台·在线保险
All for pursuit.1 小时前
【回溯-6】79.单词搜索
数据结构·c++·算法·leetcode
掉进电商坑三年没爬出来的东叔1 小时前
青龙面板进阶:一个面板聚合多平台签到,所有积分自动领
java·开发语言
ZhangJun951 小时前
Mobike 共享单车分析项目
人工智能·python·算法·kmeans·聚类·knn
Navigator_Z1 小时前
LeetCode //C - 1281. Subtract the Product and Sum of Digits of an Integer
c语言·算法·leetcode
薛定e的猫咪1 小时前
(AISTATS 2023)BaCaDI 逐章阅读
人工智能·深度学习·算法·机器学习