以下是一个简单的狼人杀游戏的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;
}

请注意,这只是一个简单的示例代码,仅包含了基本的游戏流程和角色行动,具体的游戏规则和细节可能需要根据实际需求进行修改和完善。

c++做一个狼人杀

原文地址: https://www.cveoy.top/t/topic/i4Uh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录