//得到随机怪兽int getRandomNumber(int min, int max){ static constexpr double fraction{ 1.0 / (RAND_MAX + 1.0) }; return min + static_cast<int>((max - min + 1) * (std::rand() * fraction));}class Monster : public Creature{public: //怪兽种类的枚举 enum class Type { dragon, orc, slime, max_types }; Monster(Type type) : Creature{ getDefaultCreature(type) } {} static Monster getRandomMonster() { int num{ getRandomNumber(0, static_cast<int>(Type::max_types) - 1) }; return Monster{ static_cast<Type>(num) }; }private: //怪兽查找表 static const Creature& getDefaultCreature(Type type) { static const std::array<Creature, static_cast<std::size_t>(Type::max_types)> monsterData { { { "dragon", 'D', 20, 4, 100 }, { "orc", 'o', 4, 2, 25 }, { "slime", 's', 1, 1, 10 } } }; return monsterData.at(static_cast<std::size_t>(type)); }}这段代码每一行的详细解释和分析;
时间: 2024-02-19 08:02:08 浏览: 75
getRandomInt:一个JavaScript函数,旨在生成一个在支持从结果中排除数字的范围内的随机整数
这段代码实现了一个怪兽类Monster,它继承自另一个类Creature。主要实现了以下几个功能:
1. 定义了一个枚举类型Type,表示怪兽的种类,包括龙、兽人和史莱姆三种。
2. 定义了一个构造函数Monster(Type type),用于创建一个指定种类的怪兽对象。在构造函数中调用了另一个函数getDefaultCreature(Type type),该函数用于获取指定种类怪兽的属性信息,并将这些属性信息传递给Creature类的构造函数,从而创建一个Creature对象。
3. 定义了一个静态函数getRandomMonster(),用于随机生成一个怪兽对象。在该函数中,首先调用了另一个函数getRandomNumber(int min, int max),用于生成一个介于min和max之间的随机整数。然后根据生成的随机整数,选择一种怪兽种类,最后创建并返回一个对应种类的怪兽对象。
4. 定义了一个私有静态函数getDefaultCreature(Type type),用于获取指定种类怪兽的属性信息。在该函数中,使用了一个静态的Creature类型数组monsterData,存储了所有怪兽种类的属性信息。根据传入的参数type,从monsterData数组中获取对应种类的属性信息,并返回一个const Creature类型的常量引用。
下面是每一行代码的详细解释:
第1行:定义了一个随机整数生成函数getRandomNumber,它的参数是一个最小值min和一个最大值max,返回一个介于min和max之间的随机整数。其中,fraction的值为1.0 / (RAND_MAX + 1.0),用于将rand函数生成的随机数转化为介于0和1之间的小数。
第2行:定义了一个怪兽类Monster,它继承自Creature类。
第3-4行:在Monster类中定义了一个Type枚举类型,表示怪兽的种类,包括龙、兽人和史莱姆三种。
第5行:定义了一个构造函数Monster(Type type),用于创建一个指定种类的怪兽对象。
第6行:在构造函数中调用了getDefaultCreature函数,获取指定种类怪兽的属性信息,并将这些属性信息传递给Creature类的构造函数,从而创建一个Creature对象。
第8-12行:定义了一个静态函数getRandomMonster,用于随机生成一个怪兽对象。
第13行:调用getRandomNumber函数,生成一个介于0和Type::max_types-1之间的随机整数。
第14行:根据生成的随机整数,选择一种怪兽种类。
第15行:创建并返回一个对应种类的怪兽对象。
第17-29行:定义了一个私有静态函数getDefaultCreature,用于获取指定种类怪兽的属性信息。在该函数中,使用了一个静态的Creature类型数组monsterData,存储了所有怪兽种类的属性信息。根据传入的参数type,从monsterData数组中获取对应种类的属性信息,并返回一个const Creature类型的常量引用。
阅读全文