用C++面向对象写一个抽卡模拟器的代码
时间: 2023-06-27 22:00:58 浏览: 142
用C++写的抽奖程序
3星 · 编辑精心推荐
好的,下面是一个简单的抽卡模拟器的代码,包含了一些基本的面向对象设计:
```
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std;
class Card {
public:
Card(string n, int r) : name(n), rarity(r) {}
string getName() const { return name; }
int getRarity() const { return rarity; }
private:
string name;
int rarity;
};
class Gacha {
public:
Gacha() {
cards.push_back(Card("Card A", 3));
cards.push_back(Card("Card B", 4));
cards.push_back(Card("Card C", 5));
}
Card draw() {
int r = rand() % 100;
if (r < 5) {
return Card("Card D", 6);
} else if (r < 25) {
return Card("Card C", 5);
} else if (r < 55) {
return Card("Card B", 4);
} else {
return Card("Card A", 3);
}
}
private:
vector<Card> cards;
};
int main() {
srand(time(NULL));
Gacha gacha;
for (int i = 0; i < 10; i++) {
Card card = gacha.draw();
cout << "You got " << card.getName() << " (Rarity " << card.getRarity() << ")" << endl;
}
return 0;
}
```
在这个代码中,我们定义了两个类:`Card` 和 `Gacha`。`Card` 表示每一张卡牌,它有一个名称和一个稀有度属性。`Gacha` 表示整个抽卡系统,它包含了所有的卡牌,并且定义了一个 `draw` 方法,用于随机抽卡。
在 `main` 函数中,我们创建了一个 `Gacha` 对象,并且调用了它的 `draw` 方法来进行抽卡。我们使用 `srand` 函数来设置随机数种子,以及使用 `time` 函数来获取当前时间作为种子。最后,我们循环抽了 10 张卡,并且输出了每一张卡的名称和稀有度。
阅读全文