斗地主案例

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();
    }
}
相关推荐
宠..1 小时前
VS Code 修改 C++ 标准同时修改错误检测标准
java·linux·开发语言·javascript·c++·python·qt
WL_Aurora1 小时前
Java Scanner输入陷阱深度解析
java·开发语言
一只大袋鼠1 小时前
SpringMVC 框架中的拦截器
java·springmvc·javaweb·拦截器
Han_han9191 小时前
斗地主案例:
java·开发语言
阿丰资源1 小时前
基于SpringBoot的电影评论网站(含源码)
java·spring boot·后端
小码哥0681 小时前
2026版基于springboot的家政服务预约系统
java·spring boot·后端
Languorous.1 小时前
C++数据结构高阶|B+树深度解析:从底层原理到数据库应用,面试高频考点全覆盖
数据结构·b树·面试
洛水水1 小时前
【力扣100题】39.二叉树的最近公共祖先
算法·leetcode·职场和发展
xuhaoyu_cpp_java1 小时前
SpringMVC学习(三)
java·经验分享·笔记·学习·spring