diff --git a/src/common/utils.cpp b/src/common/utils.cpp new file mode 100644 index 0000000..a42e64b --- /dev/null +++ b/src/common/utils.cpp @@ -0,0 +1,26 @@ +/** + * @file utils.cpp + * + * @author Yuzhe Guo + * @date 2025.11.15 + */ +#include "utils.h" + +namespace UNO::COMMON { + Random::Random() : rd_(), gen_(rd_()) {} + std::mt19937 &Random::getGenerator() { + return gen_; + } + + Utils *Utils::getInstance() { + if (Utils::instance_ == nullptr) { + Utils::instance_ = new Utils(); + } + return Utils::instance_; + } + Random &Utils::getRandom() { + return this->random_; + } + + +} // UNO \ No newline at end of file diff --git a/src/common/utils.h b/src/common/utils.h new file mode 100644 index 0000000..32ca492 --- /dev/null +++ b/src/common/utils.h @@ -0,0 +1,50 @@ +/** + * @file utils.h + * 工具 + * + * @author Yuzhe Guo + * @date 2025.11.15 + */ +#ifndef UNO_GAME_UTILS_H +#define UNO_GAME_UTILS_H +#include + +namespace UNO::COMMON { + /** + * 随机数生成器 + */ + class Random { + private: + std::random_device rd_; + std::mt19937 gen_; + + public: + Random(); + + /** + * @return 一个 std::mt19937 + */ + std::mt19937 &getGenerator(); + }; + + class Utils { + private: + Utils() = default; + Random random_; + static Utils* instance_; + + public: + /** + * @return 随机数生成器 + */ + Random &getRandom(); + + /** + * @return 工具实例 + */ + static Utils *getInstance(); + + }; +} // UNO + +#endif //UNO_GAME_UTILS_H