斗地主案例

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();
    }
}
相关推荐
大圣编程5 分钟前
面向对象深度理解
java·开发语言·算法
爱喝水的鱼丶11 分钟前
SAP-ABAP:SAP 简单报表输出开发系列(共6篇) 第四篇:SAP 报表异常处理机制:数据校验与消息提示规范落地
开发语言·数据库·学习·算法·sap·abap
影寂ldy12 分钟前
C# const 常量 / readonly 只读 / static readonly
java·开发语言·c#
摇滚侠15 分钟前
Maven 入门+高深 体系外 jar 包导入 172
java·maven·jar
做个文艺程序员25 分钟前
第02篇:K8s 存储与配置管理:ConfigMap、Secret、PV/PVC 实战——Java SaaS 多租户配置最佳实践
java·容器·kubernetes
爱吃牛肉的大老虎28 分钟前
Spring中用到的设计模式
java·spring·设计模式
Refrain_zc30 分钟前
Android TV 语音消息实战:遥控器 PCM 录音失真修复与扬声器强制播放方案
java
Stick_ZYZ31 分钟前
从“能调用工具”到“能稳定执行任务”:Agent 工程化的下一步
java·人工智能·后端·spring·ai
代码中介商35 分钟前
C++四大设计模式:单例、工厂、观察者、策略
java·c++·设计模式
宋志宗39 分钟前
从三层架构到清晰边界:一套更适合复杂 Java 服务的分层方法
java