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

简介: 【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);
    }
}


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

目录
相关文章
|
4月前
|
Java 索引
Java实现扑克牌游戏 | 随机发牌 ( 过程拆分详解+完整代码 )
Java实现扑克牌游戏 | 随机发牌 ( 过程拆分详解+完整代码 )
|
6月前
|
存储 Java
如何用Java实现扑克牌(附源码)
如何用Java实现扑克牌(附源码)
154 0
Java-扑克牌的创建以及发放
Java-扑克牌的创建以及发放
94 0
用Java实现简易的洗牌和发牌功能
在日常生活中,想必大家都玩过或者听过斗地主吧,斗地主大致分为三个过程:洗牌,发牌,玩家按照规则将手中的牌给打完,谁最先打完,谁就获胜。这听起来挺简单的,但是影响你胜利的因素有很多:洗牌,玩家的水平。在赌场中很多人就是在洗牌跟发牌的过程中作弊的,那么我们可不可以用代码来实现洗牌跟发牌的功能来实现相对公平呢?
|
存储 小程序 Java
Java数据结构之基于ArrayList编写大众麻将和扑克牌洗牌小练习
本文讲解:Java数据结构之基于ArrayList编写大众麻将和扑克牌洗牌小练习
Java---ArrayList实现扑克牌的洗牌与抓牌程序
一副扑克牌去掉大小王还剩52张牌,三个人玩儿,也就是一个人能拿到13张牌,一副新牌是按照顺序进行排列好的,要想玩就必须先洗牌,就是将牌的初始顺序打乱然后每个人一次拿一张牌,直到每人拿到13牌。
Java---ArrayList实现扑克牌的洗牌与抓牌程序
|
小程序 Java
Java——使用集合实现简单的斗地主发牌功能(两种方式简单粗暴!!!)
Java——使用集合实现简单的斗地主发牌功能(两种方式简单粗暴!!!)
Java——使用集合实现简单的斗地主发牌功能(两种方式简单粗暴!!!)
|
存储 Java 对象存储
JAVA模拟斗地主洗牌,发牌,看牌
JAVA模拟斗地主洗牌,发牌,看牌
265 0
JAVA模拟斗地主洗牌,发牌,看牌