狼人杀程序代码 c++
时间: 2023-09-14 17:11:42 浏览: 42
以下是一个简单的狼人杀程序代码,使用 C 语言编写:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 定义角色类型
typedef enum {
WOLF, // 狼人
VILLAGER, // 村民
SEER, // 预言家
WITCH, // 女巫
HUNTER, // 猎人
IDIOT, // 白痴
NUM_OF_ROLES // 角色总数
} Role;
// 定义角色名字
char* role_names[NUM_OF_ROLES] = {
"狼人",
"村民",
"预言家",
"女巫",
"猎人",
"白痴"
};
// 定义每个角色的数量
int num_of_roles[NUM_OF_ROLES] = {
2, // 狼人
5, // 村民
1, // 预言家
1, // 女巫
1, // 猎人
1 // 白痴
};
// 随机生成角色分配
void generate_roles(Role* roles, int num_of_players) {
int i, j, k;
int num_of_total_roles = 0;
for (i = 0; i < NUM_OF_ROLES; i++) {
num_of_total_roles += num_of_roles[i];
}
if (num_of_total_roles < num_of_players) {
printf("角色数量不足,无法分配\n");
return;
}
int num_of_unused_roles = num_of_total_roles;
for (i = 0; i < num_of_players; i++) {
// 从未使用的角色中随机选择一个
int role_index = rand() % num_of_unused_roles;
for (j = 0; j < NUM_OF_ROLES; j++) {
if (role_index < num_of_roles[j]) {
roles[i] = j;
num_of_roles[j]--;
num_of_unused_roles--;
break;
}
role_index -= num_of_roles[j];
}
}
}
// 显示角色分配结果
void show_roles(Role* roles, int num_of_players) {
int i;
printf("角色分配结果:\n");
for (i = 0; i < num_of_players; i++) {
printf("玩家%d:%s\n", i + 1, role_names[roles[i]]);
}
}
int main() {
srand(time(NULL)); // 初始化随机数种子
int num_of_players = 12; // 玩家数量
Role roles[num_of_players]; // 角色分配结果
generate_roles(roles, num_of_players);
show_roles(roles, num_of_players);
return 0;
}
```
这个程序实现了随机分配狼人杀游戏中的角色,并且输出角色分配结果。你可以根据自己的需要修改角色数量、角色名字等参数。
相关推荐
















