一副新的扑克牌

package d5_static_codeblock;

import java.util.ArrayList;

public class StaticCodeTest3 {
    /**
     模拟初始化牌操作
     点数: "3","4","5","6","7","8","9","10","J","Q","K","A","2"
     花色: "♠", "♥", "♣", "♦"
     1、准备一个容器,存储54张牌对象,这个容器建议使用静态的集合。静态的集合只加载一次。
     */
    /**
     int age = 12;
     ArrayList<String> cards = new ArrayList<>();
     */
    //static ArrayList<String> cards = new ArrayList<>();
    public static ArrayList<String> cards = new ArrayList<>();

    /**
     2、在游戏启动之前需要准备好54张牌放进去,使用静态代码块进行初始化
     */
    static{
        //3、加载54张牌进去
        //4、准备4种花色:类型确定,数量确定
        String[] colors ={"♠", "♥", "♣", "♦"};
        //5、定义点数
        String[] sizes = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        //6、遍历点数、再组合花色
        for (int i = 0; i < sizes.length; i++) {
            //sizes = [i]
            for (int j = 0; j < colors.length; j++) {
                cards.add(sizes[i] + colors[j]);
            }
        }
        //7、添加大小王
        cards.add("小王");
        cards.add("大王");
    }

    public static void main(String[] args) {

        System.out.println("新牌:" + cards);
    }
}

### C++ 实现扑克牌随机打乱并输出 以下是一个完整的 C++ 程序,用于实现一副扑克牌的随机打乱以及最终的结果输出。程序采用了 STL 中的 `vector` 和 `random_shuffle` 方法来简化洗牌过程。 #### 使用 C++ 实现扑克牌随机打乱 ```cpp #include <iostream> #include <vector> #include <string> #include <algorithm> // std::random_shuffle #include <ctime> // time() #include <cstdlib> // srand(), rand() using namespace std; /// 初始化扑克牌函数 vector<string> initializeDeck() { vector<string> deck; string suits[] = {"♠", "♥", "♦", "♣"}; // 黑桃、红心、梅花、方片 string ranks[] = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}; for (const auto& suit : suits) { // 遍历四种花色 for (const auto& rank : ranks) { // 遍历十三种点数 deck.push_back(rank + suit); // 将每张牌加入向量中 } } return deck; } /// 打印扑克牌函数 void printDeck(const vector<string>& deck) { for (size_t i = 0; i < deck.size(); ++i) { cout << deck[i] << ((i + 1) % 13 ? "\t" : "\n"); // 每行显示13张牌 } cout << endl; } int main() { vector<string> deck = initializeDeck(); /// 显示初始扑克牌顺序 cout << "初始化的扑克牌:" << endl; printDeck(deck); /// 设置随机种子 srand(static_cast<unsigned>(time(0))); /// 洗牌操作 random_shuffle(deck.begin(), deck.end()); /// 显示洗牌后的扑克牌顺序 cout << "\n洗牌后的扑克牌:" << endl; printDeck(deck); return 0; } ``` --- #### 功能解析 1. **扑克牌初始化** 利用两个字符串数组分别表示花色和点数,并通过双重循环构建一副完整的扑克牌[^1]。每一组组合形成一张具体的扑克牌(如 `"A♠"` 表示 A of Spades)。这些扑克牌被存入一个 `std::vector<std::string>` 类型的容器中。 2. **设置随机种子** 使用 `srand(static_cast<unsigned>(time(0)))` 来设定随机数生成器的种子值,从而确保每次运行程序时都能获得不同的随机序列。 3. **洗牌逻辑** 借助 `<algorithm>` 头文件中的 `std::random_shuffle` 函数对整个扑克牌集合进行随机排列。此方法简单高效,适用于大多数场景下的基本需求。 4. **结果展示** 自定义了一个辅助函数 `printDeck()` ,它负责按照一定格式逐行打印出所有的扑克牌信息。为了美观起见,每行最多只显示 13 张牌[^2]。 --- ### 进一步改进方向 尽管上述代码已经满足题目要求,但在实际应用中还可以考虑如下几点增强: - 支持带大小王的扑克牌; - 提供更灵活的人机交互界面,允许用户自定义某些参数; - 对于大规模数据或者更高精度的要求,则可以替换掉旧版的 `std::random_shuffle` 并改用现代 C++ 推荐的新工具——即来自 `<random>` 库的相关类模板实例化对象来进行更加可控且高质量的随机采样工作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值