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


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

目录
相关文章
|
10月前
Java-扑克牌的创建以及发放
Java-扑克牌的创建以及发放
60 0
|
11月前
|
Java
初学java小测试 扑克牌游戏
初学java小测试 扑克牌游戏
|
12月前
|
Java
用Java实现简易的洗牌和发牌功能
在日常生活中,想必大家都玩过或者听过斗地主吧,斗地主大致分为三个过程:洗牌,发牌,玩家按照规则将手中的牌给打完,谁最先打完,谁就获胜。这听起来挺简单的,但是影响你胜利的因素有很多:洗牌,玩家的水平。在赌场中很多人就是在洗牌跟发牌的过程中作弊的,那么我们可不可以用代码来实现洗牌跟发牌的功能来实现相对公平呢?
|
存储 小程序 Java
Java数据结构之基于ArrayList编写大众麻将和扑克牌洗牌小练习
本文讲解:Java数据结构之基于ArrayList编写大众麻将和扑克牌洗牌小练习
|
小程序 Java
Java——使用集合实现简单的斗地主发牌功能(两种方式简单粗暴!!!)
Java——使用集合实现简单的斗地主发牌功能(两种方式简单粗暴!!!)
Java——使用集合实现简单的斗地主发牌功能(两种方式简单粗暴!!!)
|
存储 Java 对象存储
JAVA模拟斗地主洗牌,发牌,看牌
JAVA模拟斗地主洗牌,发牌,看牌
240 0
JAVA模拟斗地主洗牌,发牌,看牌
(JAVA编程练习):两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。抽签名单已经决定,有人向队员打听比赛名单。a说他不和x比,c说他不和x,z比,编写程序找出比赛名单。
(JAVA编程练习):两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。抽签名单已经决定,有人向队员打听比赛名单。a说他不和x比,c说他不和x,z比,编写程序找出比赛名单。
(JAVA编程练习):两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。抽签名单已经决定,有人向队员打听比赛名单。a说他不和x比,c说他不和x,z比,编写程序找出比赛名单。
|
Java
Java扑克牌(多线程)
Java扑克牌(多线程)
127 0
Java扑克牌(多线程)