当然可以!下面是一个简单的狼人杀小游戏的示例代码:

#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;
}

这只是一个简单的示例代码,你可以根据自己的需求进行修改和扩展

你能用C加加编一个狼人杀小游戏吗?

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

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