使用c++写一个狼人杀游戏
时间: 2023-12-25 19:24:32 浏览: 197
由于狼人杀游戏需要包含多个角色和游戏流程,因此编写一个完整的狼人杀游戏需要大量的代码和时间。以下是一个简单的狼人杀游戏示例,仅包含两个角色:狼人和平民。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_PLAYER 10
enum Role {WEREWOLF, VILLAGER};
int main() {
int num_player;
int player[MAX_PLAYER];
enum Role role[MAX_PLAYER];
int werewolf_count = 0;
int i, j;
// 随机生成玩家角色
srand(time(NULL));
printf("请输入玩家数量(最多%d人):", MAX_PLAYER);
scanf("%d", &num_player);
if (num_player > MAX_PLAYER) {
printf("玩家数量超过上限!\n");
return 1;
}
for (i = 0; i < num_player; i++) {
player[i] = i + 1;
if (rand() % 2 == 0) {
role[i] = WEREWOLF;
werewolf_count++;
} else {
role[i] = VILLAGER;
}
}
// 显示玩家角色
printf("游戏开始!玩家角色如下:\n");
for (i = 0; i < num_player; i++) {
printf("玩家%d是", player[i]);
if (role[i] == WEREWOLF) {
printf("狼人\n");
} else {
printf("平民\n");
}
}
// 狼人杀人
printf("狼人开始行动!\n");
if (werewolf_count == 0) {
printf("没有狼人!\n");
return 0;
}
while (1) {
int target;
printf("请选择要杀的玩家编号:");
scanf("%d", &target);
for (i = 0; i < num_player; i++) {
if (player[i] == target) {
if (role[i] == WEREWOLF) {
printf("狼人不能杀狼人!\n");
} else {
printf("玩家%d已死亡!\n", target);
role[i] = -1; // 标记死亡
werewolf_count--;
break;
}
}
}
if (werewolf_count == 0) {
printf("所有狼人已死亡!\n");
break;
}
}
// 结束游戏
printf("游戏结束!存活的玩家如下:\n");
for (i = 0, j = 1; i < num_player; i++) {
if (role[i] != -1) {
printf("玩家%d是", player[i]);
if (role[i] == WEREWOLF) {
printf("狼人\n");
} else {
printf("平民\n");
}
player[i] = j++; // 重新编号
}
}
return 0;
}
```
这个简单的狼人杀游戏示例只包含了一个狼人杀人的环节,其他环节(如白天投票、验人等)可以根据需要进行扩展。同时,该示例也存在很多不足之处,如没有进行角色平衡、没有考虑异常情况处理等。因此,实际编写狼人杀游戏时需要更加细致地考虑各个环节和细节。
阅读全文