棒打老虎鸡吃虫游戏c++
时间: 2023-11-24 15:50:42 浏览: 100
以下是一个简单的棒打老虎鸡吃虫游戏的C++实现:
```c++
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
// 定义四种族的枚举类型
enum class Race {
STICK,
TIGER,
CHICKEN,
WORM
};
// 定义四种族的类
class Stick {
public:
Race getRace() const {
return Race::STICK;
}
};
class Tiger {
public:
Race getRace() const {
return Race::TIGER;
}
};
class Chicken {
public:
Race getRace() const {
return Race::CHICKEN;
}
};
class Worm {
public:
Race getRace() const {
return Race::WORM;
}
};
// 定义比赛类
class Game {
public:
Game(int numPlayers) {
// 初始化红队和黑队的成员
for (int i = 0; i < numPlayers; i++) {
if (i % 2 == 0) {
redTeam.push_back(getRandomPlayer());
} else {
blackTeam.push_back(getRandomPlayer());
}
}
}
void play() {
// 让红队和黑队的成员一一对搏
for (int i = 0; i < redTeam.size(); i++) {
cout << "Red team: " << getRaceName(redTeam[i]->getRace()) << " vs. ";
cout << "Black team: " << getRaceName(blackTeam[i]->getRace()) << " - ";
if (redTeam[i]->getRace() == blackTeam[i]->getRace()) {
cout << "Draw" << endl;
} else if (redTeam[i]->getRace() == Race::STICK && blackTeam[i]->getRace() == Race::TIGER) {
cout << "Black team wins" << endl;
blackScore++;
} else if (redTeam[i]->getRace() == Race::TIGER && blackTeam[i]->getRace() == Race::CHICKEN) {
cout << "Black team wins" << endl;
blackScore++;
} else if (redTeam[i]->getRace() == Race::CHICKEN && blackTeam[i]->getRace() == Race::WORM) {
cout << "Black team wins" << endl;
blackScore++;
} else if (redTeam[i]->getRace() == Race::WORM && blackTeam[i]->getRace() == Race::STICK) {
cout << "Black team wins" << endl;
blackScore++;
} else {
cout << "Red team wins" << endl;
redScore++;
}
}
// 输出总比分
cout << "Red team score: " << redScore << endl;
cout << "Black team score: " << blackScore << endl;
}
private:
vector<Stick*> redTeam;
vector<Tiger*> redTeam;
vector<Chicken*> redTeam;
vector<Worm*> redTeam;
int redScore = 0;
int blackScore = 0;
// 随机生成一个成员
Player* getRandomPlayer() {
int r = rand() % 4;
switch (r) {
case 0:
return new Stick();
case 1:
return new Tiger();
case 2:
return new Chicken();
case 3:
return new Worm();
}
}
// 根据枚举类型返回族名
string getRaceName(Race race) {
switch (race) {
case Race::STICK:
return "Stick";
case Race::TIGER:
return "Tiger";
case Race::CHICKEN:
return "Chicken";
case Race::WORM:
return "Worm";
}
}
};
int main() {
srand(time(nullptr));
Game game(10);
game.play();
return 0;
}
```