编程语言
首页 > 编程语言> > java----买牌和洗牌

java----买牌和洗牌

作者:互联网

  1. 问题描述
    实现一个买扑克牌和洗扑克牌的问题
  2. 解决思路
    创建一个类表示一张牌, 然后将牌放入顺序表中.
    根据每张牌在顺序表中的下标, 与随机找的下标的牌进行交换, 实现洗牌.
  3. 源代码
    一张牌
public class Card {
    // 点数
    String rank;
    // 花色
    String suit;

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

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

对牌的操作

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

public class PokerGame {
    public static final String[] suits = {"♣", "♠", "♥", "♦"};
    private static List<Card> burPoker() {
        // 向上转型
        List<Card> poker = new ArrayList<>();
        for (int i= 0; i < 4; i++) {
            for (int j = 2; j <= 10; j++) {
                poker.add(new Card("" +j, suits[i]));
            }
            poker.add(new Card("A", suits[i]));
            poker.add(new Card("J", suits[i]));
            poker.add(new Card("Q", suits[i]));
            poker.add(new Card("K", suits[i]));
        }
        poker.add(new Card("Big Joker", ""));
        poker.add(new Card("Small Joker", ""));
        return poker;
    }

    public static void shuffle(List<Card> poker) {
        Random random = new Random();
        for (int i = poker.size() - 1; i > 0; i--) {
            int pos = random.nextInt(i);
            swap(poker, i, pos);
        }
    }

    private static void swap(List<Card> poker, int i, int pos) {
        Card temp = poker.get(i);
        poker.set(i, poker.get(pos));
        poker.set(pos, temp);
    }

    public static void main(String[] args) {
        List<Card> poker = burPoker();
        System.out.println(poker);
        shuffle(poker);
        System.out.println(poker);
    }
    
}

标签:poker,java,String,----,add,买牌,new,public,Card
来源: https://blog.csdn.net/m0_50527451/article/details/113725277