【Java】三人扑克牌随机发牌

要求:实现给三个人随机发牌,每人发五张牌,而且显示剩余的牌。

代码:
在这里插入图片描述
Card和CardDemo:

import  java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.Callable;

class  Card{
    public  int rank;
    public  String suit;
    public Card(int rank, String suit) {
        this.rank = rank;
        this.suit = suit;
    }

    @Override
    public String toString() {
        return  ""+suit +"" +rank ;
    }
}



public class CardDemo {
    public  static final  String[] suits={ "♥","♠","♣","♦"};
    public  List<Card>  BuyDeskCard(){     //买牌
        List<Card> cards=new ArrayList<>();
        for (int i=1;i<=13;i++){
            for (int j=0;j<4;j++){
                Card card=new Card(i,suits[j]);
                cards.add(card);
            }
        }
    return cards;
    }
    public void  shuffle(List<Card> cards){

        for(int i=cards.size()-1;i>0;i--){
            Random random=new Random();
            int index=random.nextInt(i);
            swap(cards,index,i);
        }
    }
    private void swap(List<Card> cards,int i,int j){
        Card tmp=cards.get(i);
        cards.set(i,cards.get(j));
        cards.set(j,tmp);
    }
    public  List<List<Card>>  test(List<Card> cards){
        List<Card> hand1=new ArrayList<>();
        List<Card> hand2=new ArrayList<>();
        List<Card> hand3=new ArrayList<>();
        List<List<Card>> hands=new ArrayList<>();
        hands.add(hand1);
        hands.add(hand2);
        hands.add(hand3);
        for (int i=0;i<5;i++){
            for (int j=0;j<3;j++){
             Card card= cards.remove(0);
             hands.get(j).add(card);
            }
        }
        return  hands;
    }

}

Test:

import java.util.List;

import  java.util.ArrayList;
public class Test {
    public static void main(String[] args) {
        CardDemo cardDemo = new CardDemo();
        List<Card> ret = cardDemo.BuyDeskCard();
        cardDemo.shuffle(ret);
        List<List<Card>> ret2= cardDemo.test(ret);
        for (int i=0;i<ret2.size();i++){
            System.out.println("第"+i+"个人的牌:"+ret2.get(i));
        }
        System.out.println("剩余的牌");
        System.out.println(ret);
    }
}

实现效果:每次运行的结果都不一样,实现了随机发牌。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IT阿牛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值