ArrayList实现扑克牌(买牌、洗牌、拿牌)

这篇博客展示了如何用Java编程实现扑克牌的买牌、洗牌和分发(拿牌)功能。通过创建Card类表示扑克牌,然后在TestCard类中定义了静态方法来完成相应操作。buyCard()方法用于生成扑克牌,washCard()方法实现了随机洗牌,handOut()方法则将牌分发给多个玩家。示例代码详细地演示了这些功能的实现过程。
摘要由CSDN通过智能技术生成

分别实现扑克牌的买牌,洗牌,以及拿牌操作:
完整代码:

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

class Card{
    private String color;//花色
    private int number;//牌面

    public Card(String color, int number) {
        this.color = color;
        this.number = number;
    }

    @Override
    public String toString() {
        return ("花色:"+color+"牌面:"+number);
    }
}
public class TestCard {
    public static List<Card> buyCard(){//买牌
        String[] colors={"♥","♠","♣","♦"};
        List<Card> cards=new ArrayList<>();
        for (int i=0;i<4;i++){
            for (int j=0;j<13;j++){
                Card card=new Card(colors[i],j);
                cards.add(card);
            }
        }
        return cards;
    }
public static List<Card> washCard(List<Card> cards){//洗牌
    Random random=new Random();
    for (int i=cards.size()-1;i>=0;i--){
        int index=random.nextInt(cards.size());
        Card temp=cards.get(i);
        cards.set(i,cards.get(index));
        cards.set(index,temp);
    }
      return cards;
}
public static List<List<Card>> handOut(List<Card> cards){//相当于二维数组
        List<List<Card>> hands=new ArrayList<>();
        for (int i=0;i<4;i++){
            List<Card> hand=new ArrayList<>();
            hands.add(hand);
        }
        for (int i=0;i<5;i++){
            for (int j=0;j<3;j++){
                hands.get(j).add(cards.remove(0));//拿第一个位置的牌,拿起后该牌相当于删除
            }
        }
        return hands;
}
    public static void main(String[] args) {
        System.out.println("买牌:"+buyCard());
        System.out.println("洗牌:"+washCard(buyCard()));
        System.out.println("三人拿牌"+handOut(buyCard()));


    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值