你能用C加加编一个狼人杀小游戏吗?
当然可以!下面是一个简单的狼人杀小游戏的示例代码:
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std;
// 角色枚举
enum Role {
Villager,
Werewolf,
Seer
};
// 游戏角色类
class Player {
public:
Role role;
bool alive;
bool voted;
bool hasVoted;
int voteCount;
Player() {
alive = true;
voted = false;
hasVoted = false;
voteCount = 0;
}
};
int main() {
srand(time(0)); // 随机数种子
int numPlayers;
cout << "请输入玩家人数:";
cin >> numPlayers;
vector<Player> players(numPlayers);
// 随机分配角色
int numWerewolves = numPlayers / 4;
int numSeers = 1;
int numVillagers = numPlayers - numWerewolves - numSeers;
for (int i = 0; i < numWerewolves; i++) {
int index = rand() % numPlayers;
while (players[index].role != Villager) {
index = rand() % numPlayers;
}
players[index].role = Werewolf;
}
for (int i = 0; i < numSeers; i++) {
int index = rand() % numPlayers;
while (players[index].role != Villager) {
index = rand() % numPlayers;
}
players[index].role = Seer;
}
// 游戏循环
while (true) {
// 玩家行动
for (int i = 0; i < numPlayers; i++) {
if (players[i].alive) {
cout << "玩家" << i + 1 << "行动中..." << endl;
// 这里可以添加更多的玩家行动逻辑
// 投票
int vote;
cout << "玩家" << i + 1 << "请选择要投票的玩家编号:";
cin >> vote;
players[vote - 1].voteCount++;
players[i].hasVoted = true;
}
}
// 投票结果
int maxVotes = 0;
int maxIndex = -1;
for (int i = 0; i < numPlayers; i++) {
if (players[i].voteCount > maxVotes) {
maxVotes = players[i].voteCount;
maxIndex = i;
}
}
// 判断是否有玩家被投票出局
if (maxVotes > numPlayers / 2) {
players[maxIndex].alive = false;
cout << "玩家" << maxIndex + 1 << "被投票出局!" << endl;
// 判断游戏是否结束
int numWerewolvesAlive = 0;
int numVillagersAlive = 0;
for (int i = 0; i < numPlayers; i++) {
if (players[i].alive) {
if (players[i].role == Werewolf) {
numWerewolvesAlive++;
} else {
numVillagersAlive++;
}
}
}
if (numWerewolvesAlive == 0) {
cout << "好人阵营获胜!" << endl;
break;
}
if (numWerewolvesAlive >= numVillagersAlive) {
cout << "狼人阵营获胜!" << endl;
break;
}
}
// 清空投票结果
for (int i = 0; i < numPlayers; i++) {
players[i].voted = false;
players[i].hasVoted = false;
players[i].voteCount = 0;
}
}
return 0;
}
这只是一个简单的示例代码,你可以根据自己的需求进行修改和扩展
原文地址: https://www.cveoy.top/t/topic/iJ8m 著作权归作者所有。请勿转载和采集!