使用最蠢的方法写的发牌程序(52张牌,不含大小王)

分为三部分,首先得到随机的牌,然后将牌发给四个人,再然后就是洗牌再发牌

第一步声明要用到的东西

private static List<Card> cardList = new ArrayList<>();

private static String[] cardCategory = new String[]{"黑桃", "红桃", "方块", "梅花"};
private static String[] cards = new String[]{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
随机生成所有扑克牌
/**
     * 随机生成所有扑克牌
     */
    public static void start(){
        Random r1 = new Random();
        int c = 0;
        List<String> stringList = new ArrayList<>();
        while (c < 13){
            int index = r1.nextInt(13);
            while (stringList.contains(cards[index])) {
                index = r1.nextInt(13);
            }
            stringList.add(cards[index]);
            c++;
        }
        c = 0;
        List<String> cList = new ArrayList<>();
        int index;
        while (c < 4){
            index = r1.nextInt(4);
            while (cList.contains(cardCategory[index])) {
                index = r1.nextInt(4);
            }
            cList.add(cardCategory[index]);
            c++;
        }

        List<Card> cardList1 = new ArrayList<>();
        for (String s : stringList) {
            for (String s1 : cList) {
                Card card = new Card();
                card.setCategory(s1);
                card.setNamed(s);
                cardList1.add(card);
            }
        }

        c = 0;
        while (c < 52){
            index = r1.nextInt(52);
            while (cardList.contains(cardList1.get(index))) {
                index = r1.nextInt(52);
            }
            cardList.add(cardList1.get(index));
            c++;
        }
    }

发牌

/**
     * 开始发牌
     */
    public static void send(){
        List<Card> person1 = new ArrayList<>();
        List<Card> person2 = new ArrayList<>();
        List<Card> person3 = new ArrayList<>();
        List<Card> person4 = new ArrayList<>();

        List<List<Card>> total = new ArrayList<>();
        total.add(person1);
        total.add(person2);
        total.add(person3);
        total.add(person4);

        Random random = new Random();
        for (Card card : cardList) {

            List<Card> person = total.get(random.nextInt(4));
            while (person.size() == 13){
                person = total.get(random.nextInt(4));
            }
            person.add(card);
        }

        System.out.println(person1);
        System.out.println(person2);
        System.out.println(person3);
        System.out.println(person4);

    }

洗牌

/**
     * 洗牌
     */
    public static void reRandomCard(){
        cardList.clear();
        start();
    }

Card类

public class Card {
    private String named;
    private String category;
    Card(){}

    /**
     * 用来检验是否存在相同的类
     * @param card 要比较的
     * @return 等于2 则是相同的,否则为不同的
     */
    public boolean isEquals(Card card){
        int i = 0;
        if (card.getCategory().equals(this.category))
            i++;
        if (card.getNamed().equals(this.named))
            i++;
        return i == 2;
    }

    public String getNamed() {
        return named;
    }

    public void setNamed(String named) {
        this.named = named;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    @Override
    public String toString() {
        return named + " " + category;
    }
}

 以上就是最简单的方法了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值