java集合之斗地主发牌游戏

java集合之斗地主发牌游戏

代码

package com.js.Pai;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
 * 功能:
 *         1.做牌。
 *         2.洗牌。
 *         3.定义3个玩家
 *         4.发牌。
 *         5.排序
 *         6.看牌
 * @author JiaShuai
 * @date 2022/4/12 21:08
 */
public class CardDemo {
    public static List<Card> allCards=new ArrayList<>();
    static {
        //做牌。定义一个集合存储54张牌
        String[] sizes={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        String[] colors={"♠", "♥", "♣", "♦"};
        int index=0;
        for(String size:sizes){
            index++;
            for (String color:colors){
                Card c=new Card(size,color,index);
                allCards.add(c);
            }
        }
        //将大小王存入到集合中
        Card c1=new Card("","👲",++index);
        Card c2=new Card("","🃏",++index);
        Collections.addAll(allCards,c1,c2);
        System.out.println("新牌:"+allCards);
    }
    public static void main(String[] args) {
        //调用Collections的shuffle对数组进行乱序排列(洗牌)
        Collections.shuffle(allCards);
        System.out.println("洗牌后:"+allCards);
        //定义三个集合(玩家)
        List<Card> zhangsan=new ArrayList<>();
        List<Card> lisi=new ArrayList<>();
        List<Card> wangwu=new ArrayList<>();
        //使用对3取余的方法进行发牌
        for (int i = 0; i < allCards.size()-3; i++) {
            Card c= allCards.get(i);
            if (i%3==0){
                //张三的牌
                zhangsan.add(c);
            }else if(i%3==1){
                //李四的牌
                lisi.add(c);
            }else {
                //王五的牌
                wangwu.add(c);
            }
        }
        //剩余的三张底牌
        List<Card> lastThreeCards=allCards.subList(allCards.size()-3,allCards.size());
        //调用方法进行排序
        sortCards(zhangsan);
        sortCards(lisi);
        sortCards(wangwu);
        System.out.println("张三的牌:"+zhangsan);
        System.out.println("李四的牌:"+lisi);
        System.out.println("王五的牌:"+wangwu);
        System.out.println("三张底牌:"+lastThreeCards);
    }
    //将每个人手中的牌进行排序(从大到小)
    private static void sortCards(List<Card> cards) {
        Collections.sort(cards, new Comparator<Card>() {
            @Override
            public int compare(Card o1, Card o2) {
                return o2.getIndex()- o1.getIndex();
            }
        });
    }
}

截图

在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小唐僧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值