c++做一个狼人杀
以下是一个简单的狼人杀游戏的C++代码示例:
#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
using namespace std;
// 玩家角色
enum Role {
Villager,
Werewolf,
Seer,
Witch,
Hunter
};
// 玩家结构体
struct Player {
string name;
Role role;
bool alive;
};
// 游戏状态
enum GameState {
NotStarted,
Night,
Day,
GameOver
};
// 初始化玩家
void initializePlayers(vector<Player>& players) {
int numPlayers;
cout << "请输入玩家人数:";
cin >> numPlayers;
for (int i = 0; i < numPlayers; i++) {
Player player;
cout << "请输入玩家" << i+1 << "的名字:";
cin >> player.name;
player.alive = true;
players.push_back(player);
}
// 随机分配角色
srand(time(0));
vector<Role> roles = {Villager, Villager, Werewolf, Werewolf, Seer, Witch, Hunter};
random_shuffle(roles.begin(), roles.end());
for (int i = 0; i < numPlayers; i++) {
players[i].role = roles[i];
}
}
// 夜晚阶段
void nightPhase(vector<Player>& players) {
cout << "天黑了,进入夜晚阶段..." << endl;
// 狼人行动
for (auto& player : players) {
if (player.role == Werewolf && player.alive) {
cout << player.name << "是狼人,请选择要杀害的玩家:" << endl;
for (auto& target : players) {
if (target.alive && target.role != Werewolf) {
cout << target.name << " ";
}
}
cout << endl;
string targetName;
cin >> targetName;
for (auto& target : players) {
if (target.name == targetName && target.alive) {
target.alive = false;
cout << target.name << "被杀害了。" << endl;
break;
}
}
}
}
// 丘比特行动
// ...
// 女巫行动
// ...
// 预言家行动
// ...
// 猎人行动
// ...
}
// 白天阶段
void dayPhase(vector<Player>& players) {
cout << "天亮了,进入白天阶段..." << endl;
// 玩家讨论
// ...
// 公布死亡玩家身份
cout << "昨晚被杀害的玩家是:" << endl;
for (auto& player : players) {
if (!player.alive) {
cout << player.name << ",角色是:" << player.role << endl;
}
}
}
// 判断游戏是否结束
bool isGameOver(const vector<Player>& players) {
int numVillagers = 0;
int numWerewolves = 0;
for (auto& player : players) {
if (player.alive) {
if (player.role == Villager) {
numVillagers++;
} else if (player.role == Werewolf) {
numWerewolves++;
}
}
}
return numVillagers <= numWerewolves || numWerewolves == 0;
}
int main() {
vector<Player> players;
initializePlayers(players);
GameState gameState = NotStarted;
while (gameState != GameOver) {
if (gameState == NotStarted) {
cout << "游戏开始!" << endl;
gameState = Night;
} else if (gameState == Night) {
nightPhase(players);
gameState = Day;
} else if (gameState == Day) {
dayPhase(players);
if (isGameOver(players)) {
gameState = GameOver;
} else {
gameState = Night;
}
}
}
cout << "游戏结束!" << endl;
return 0;
}
请注意,这只是一个简单的示例代码,仅包含了基本的游戏流程和角色行动,具体的游戏规则和细节可能需要根据实际需求进行修改和完善。
原文地址: https://www.cveoy.top/t/topic/i4Uh 著作权归作者所有。请勿转载和采集!