狼人杀(以后都在这更新)
HUANGKE99
·
2024-07-01 19:17:39
·
休闲·娱乐
狼人杀
Wolf Killing
狼人杀大事祭
2024.6.27 第一版(狼人、平民、女巫、预言家、猎人(未完善)) 1.0
2024.6.28 第二版(引入了故事开头和经典结尾GameOver)1.1
2024.6.29 第三版(加入了守卫(未完善),加入了投票系统)1.2 交互更新
2024.6.29 第四版(守卫完善) 1.2.1 乱七八杂的更新
2024.6.29 人物表
2024.6.30 第五版(加入了白痴,加入了自主输入系统)1.2.2 自定义更新
2024.7.1 第六版(加入了咒狐、守墓人,猎人完善,加入了发表意见系统(未完善),代码300+行)1.3 黑暗世界1更新
2024.7.2 第七版(加入了乌鸦,完善了投票系统、发表意见系统,加入了人物序号的阐述,发现了自主输入的bug)[特别鸣谢 @hymax ] 1.3.1 黑暗世界2更新/交互2更新
2024.7.3 第八版(加入了狼王) 1.4狼之界1更新
2024.7.3 第九版(加入了选择警长系统(未完善)和标志牌——警长)1.5 守护者1更新
2024.7.3 第十版(完善了警长系统)1.5.1 守护者2更新
2024.7.3 第十一版(阻止了狼人自刀,加入了魔术师)1.6 魔法世界更新
2024.7.4 第十二版(加入了防偷看系统,英文错误已改,完善了咒狐的胜利系统,代码400+行)[特别鸣谢 @James_L] 1.6.1 乱七八杂的更新
2024.7.4 第十三版(加入了摄梦人)1.6.2 梦魇更新
2024.7.5 第十四版(解决了bug)[特别鸣谢 @James_L ] 1.6.3乱七八杂的更新
2024.7.6 第十五版(加入了骑士和决斗系统)1.7 战斗与荣耀更新
2024.7.7 第十六版(加入了遗言系统,代码500+行)1.8 黑暗世界3更新
2024.7.7 第十七版(加入了奇迹商人、禁言长老和天选之子(奇迹商人选中的天选之子)系统)1.9魔法世界2更新
2024.7.7 第十八版(加入了老流氓和猎魔人,代码破600+行)1.10 1.10 黑暗世界4更新
2024.7.8 第十九版(加入了纯白之女,定序王子和驯熊师)1.11 魔法世界3更新/时间与魔法1更新
2024.7.9 第二十版(加入了隐狼和狼美人,完善了驯熊师,代码700+行)1.12 狼之界2更新
2024.7.9 第二十一版(完善了预言家,天选之子和狼美人)1.13 魔法世界4更新/狼之界3更新/黑暗世界5更新
2024.7.10 第二十二版(加入了石像鬼,代码800+行)1.14黑暗世界6更新
2024.7.31 第二十三版(修好了一个小bug)1.14.1乱七八杂的更新
2024.11.23 第二十四(Man)版(加入了蚀时狼妃(未完善)) 1.14.2 狼之界4更新/黑暗世界7更新/时间与魔法2更新
Code
#include
#include
#include
using namespace std;
const int N=20;
//1 狼人 2 平民 3 女巫 4 预言家 5 猎人
//6 守卫 7 白痴 8 咒狐 9 守墓人 10 乌鸦
//11 狼王 12 魔术师 13 摄梦人 14 骑士 15 禁言长老
//16 奇迹商人 17 老流氓 18 猎魔人 19 纯白之女 20 定序王子
//21 驯熊师 22 隐狼 23 狼美人 24 石像鬼 25 蚀时狼妃
int Knight_Show_Identity;
int Ershi_Wolf_Concubine;
int Prince_Show_Identity;
int Live_of_Player[N];
int Died_Yesterday[N];
int Witch_of_Panacea;
int Choose_Police[N];
int Witch_of_Poison;
int Knights_Number;
int Magic1,Magic2;
int Vote_List[N];
int Job_List[N];
int Good_Player;
bool Find_Idiot;
int Sleepwalker;
int Prohibition;
int Roue_Number;
int Bad_Player;
int Player_Num;
int Police_Man;
bool Curse_Fox;
int Chosen_Son;
int Day,Job_CS;
int Charm;
void Game_Start(){
printf("这是一个 弱肉强食 的世界\n只有更强的人,才能活下来……\n");
printf("天神,为了保护弱者而出现的平民……\n");
printf("狼人,一种诡异的狼族,可以幻化为人……\n");
printf("平民,一个靠智慧活下来的物种……\n");
printf("一场逻辑推理的游戏开始了……");
getch();
system("cls");
}
void Tell_Character(int i){
int Game_Player=Job_List[i];
if(Game_Player==1)
printf("你是 杀人如麻的[狼人]\n每天早上伪装成平民,晚上可以杀人\n阵营:[坏人]");
else if(Game_Player==2)
printf("你是 手无寸铁的[平民]\n只能用推理保全自己的性命\n阵营:[好人]");
else if(Game_Player==3)
printf("你是 善恶两面的[女巫]\n每天晚上可以用[灵药]救人,也可以用[毒药]杀人\n阵营:[好人]");
else if(Game_Player==4)
printf("你是 神通广大的[预言家]\n每天晚上可以预言一个人的身份\n阵营:[好人]");
else if(Game_Player==5)
printf("你是 保护百姓的[猎人]\n当你临死前,可以杀一个玩家(不管是好的还是坏的)\n阵营:[好人]");
else if(Game_Player==6)
printf("你是 守卫众人的[守卫]\n每天晚上可以保护一个人\n阵营:[好人]");
else if(Game_Player==7)
printf("你是 无比愚蠢的[白痴]\n当有人要放逐你时,你可以报出身份,但不能再投票了\n阵营:[好人]");
else if(Game_Player==8)
printf("你是 见风使舵的[咒狐]\n你可以是好人阵营,也可以是狼人阵营,但如果预言家预言你,你就死定了\n阵营:[第三方]");
else if(Game_Player==9)
printf("你是 守墓一生的[守墓人]\n每天晚上你可以与死去的鬼魂沟通,知道他的阵营\n阵营:[好人]");
else if(Game_Player==10)
printf("你是 被人厌恶的[乌鸦]\n每天晚上你可以诅咒一个玩家,是他在投票时多一票\n阵营:[好人]");
else if(Game_Player==11)
printf("你是 凶残无比的[狼王]\n每天早上伪装成平民,晚上可以杀人,当被他人杀死或被放逐,可以带走一人\n阵营:[坏人]");
else if(Game_Player==12)
printf("你是 神秘莫测的[魔术师]\n每天晚上可以交换两人身份,天明时两人身份互换回来\n阵营:[好人]");
else if(Game_Player==13)
printf("你是 使人梦游的[摄梦人]\n每天晚上可以是一人成为梦游者,使他无视所有伤害\n阵营:[好人]");
else if(Game_Player==14)
printf("你是 神勇无敌的[骑士]\n在警长竞选之后,投票放逐之前翻牌,并选择一人决斗 如果是狼人,就杀死他;如果是好人,就自刎(出局)\n阵营:[好人]");
else if(Game_Player==15)
printf("你是 危言耸听的[禁言长老]\n你可以在每天晚上禁言一人\n阵营:[好人]");
else if(Game_Player==16)
printf("你是 奔波四方的[奇迹商人]\n你可以选择一个幸运儿,给予他守卫的光辉结界(或者猎人的王者之枪)、预言家的命运之眼和女巫的致命毒药\n阵营:[好人]");
else if(Game_Player==17)
printf("你是 流落街头的[老流氓]\n你可以硬抗所有伤害,直至第二天发言结束,然后你就出局了\n阵营:[好人]");
else if(Game_Player==18)
printf("你是 杀魔如麻的[猎魔人]\n每天晚上,你可以狩猎一人:如果此人是狼人,则狼人出局;若此人是平民,则你自刎(你出局)\n阵营:[好人]");
else if(Game_Player==19)
printf("你是 清纯善良的[纯白之女]\n每天晚上可以查看一人的身份,从第二个晚上开始,一旦验到狼人,则狼人出局\n阵营:[好人]");
else if(Game_Player==20)
printf("你是 掌控时间的[定序王子]\n可以选择第二天早上自爆身份,并逆转时空,回到第二天投票之前\n阵营:[好人]");
else if(Game_Player==21)
printf("你是 能懂兽语的[驯熊师]\n当早晨,熊(存活状态下)发现自己旁边存活的人里有狼人,上帝/法官会发出警告 [熊咆哮了]\n阵营:[好人]");
else if(Game_Player==22)
printf("你是 伪善子虚的[隐狼]\n当语言家语言你的时候,始终为好人(所以不能刀人),如果所有队友都死了,你将获得刀人的权利\n阵营:[坏人]");
else if(Game_Player==23)
printf("你是 妩媚娇美的[狼美人]\n每晚可魅惑一人,当你死去时,此人也会被带走\n阵营:[坏人]");
else if(Game_Player==24)
printf("你是 诡异恐怖的[石像鬼]\n你可以具体查验一个人的身份,下半夜若其他狼人存活则不进狼窝处于闭眼状态\n阵营:[坏人]");
else if(Game_Player==25)
printf("你是 铁石心肠的[蚀时狼妃]\n你可以将任意玩家封锁到时空夹缝当中,当晚,此玩家的任何技能都视为对自己释放,使用后,此技能将永久失效\n阵营:[坏人]");
getch();
system("cls");
printf("玩家%d 请离开",i);
if(i!=Player_Num)
printf("玩家%d 请按下 Enter键 查看身份",i+1);
}
void Game_Player_Print(){//人物输出
for(int i=1;i<=Player_Num;i++){
printf("玩家%d:",i);
Tell_Character(i);
char ch;
scanf("%c",&ch);
system("cls");
}
}
void Wolf_Man(){//发动技能
printf("狼人,你要杀谁?");
int Kill;
scanf("%d",&Kill);
while(Job_List[Kill]==1){
printf("他是同类,请换一个\n");
scanf("%d",&Kill);
}
if(Kill==Sleepwalker)
Live_of_Player[Kill]=0;
if(Live_of_Player[Kill]!=2)
Live_of_Player[Kill]=-1;
}
void Witch(){
bool flag=0;
printf("女巫,");
if(Witch_of_Panacea){
printf("你有一瓶灵药,今天");
int Help,Witch_number=0;
bool flag2=0;
for(int j=1;j<=Player_Num;j++){
if(Live_of_Player[j]==-1){
printf("玩家%d ",j);
flag2=1;
}
if(Job_List[j]==3)
Witch_number=j;
}
if(!flag2)
printf("没有人死去");
else{
printf("\n被杀了,你要救谁?");
scanf("%d",&Help);
if(Knight_Show_Identity==Witch_number)
Help=Witch_number;
Live_of_Player[Help]=0;
if(Help!=0)
Witch_of_Panacea--;
}
printf("\n");
flag=1;
}
if(Witch_of_Poison){
printf("你有一瓶毒药,你要杀谁?");
int Witch_number=0;
for(int j=1;j<=Player_Num;j++)
if(Job_List[j]==3)
Witch_number=j;
int Kill;
scanf("%d",&Kill);
if(Knight_Show_Identity==Witch_number)
Kill=Witch_number;
Live_of_Player[Kill]=-1;
if(Kill==Sleepwalker)
Live_of_Player[Kill]=0;
if(Kill!=0)
Witch_of_Poison--;
printf("\n");
flag=1;
}
if(!flag)
printf("你什么都没有了");
}
void Prophet(){
printf("预言家,你要预言谁?");
int Problem;
scanf("%d",&Problem);
printf("玩家%d,是",Problem);
int Prophet_number=0;
for(int i=1;i<=Player_Num;i++)
if(Job_List[i]==4)
Prophet_number=i;
if(Knight_Show_Identity==Prophet_number)
Problem=Prophet_number;
if(Job_List[Problem]==1||Job_List[Problem]==11||Job_List[Problem]==23||Job_List[Problem]==24)
printf("坏人");
else if(Job_List[Problem]!=8)
printf("好人");
else{
printf("咒狐");
Live_of_Player[Problem]=-1;
}
char c;
scanf("%c",&c);
}
void Guard(){
printf("守卫,你要守护谁?");
int Help;
scanf("%d",&Help);
int Guard_number=0;
for(int i=1;i<=Player_Num;i++)
if(Job_List[i]==6)
Guard_number=i;
while(Help>Player_Num||Live_of_Player[Help]==1){
printf("不能输入此编号\n");
scanf("%d",&Help);
}
if(Knight_Show_Identity==Guard_number)
Help=Guard_number;
if(Job_List[Help]!=8)
Live_of_Player[Help]=2;
}
void Tomb_Keeper(){
printf("守墓人,昨晚死去的 ");
for(int i=1;i<=Player_Num;i++)
if(Died_Yesterday[i]==1){
printf("玩家%d 是",i);
if(Job_List[i]==1||Job_List[i]==8||Job_List[i]==11)
printf(" 坏人 ");
else
printf(" 好人 ");
}
}
void Crow(){
printf("乌鸦,你要诅咒谁?");
int Curse;
scanf("%d",&Curse);
Vote_List[Curse]++;
}
void Wolf_King(){
printf("狼王,你要杀谁?");
int Kill;
scanf("%d",&Kill);
while(Job_List[Kill]==1){
printf("他是同类,请换一个\n");
scanf("%d",&Kill);
}
if(Kill==Sleepwalker)
Live_of_Player[Kill]=0;
if(Live_of_Player[Kill]!=2)
Live_of_Player[Kill]=-1;
}
void Magician(){
printf("魔术师,你要交换哪两个人的身份?");
scanf("%d%d",&Magic1,&Magic2);
swap(Job_List[Magic1],Job_List[Magic2]);
}
void Dream_Photographer(){
printf("摄梦人,你要选择谁是梦游者?");
scanf("%d",&Sleepwalker);
Live_of_Player[Sleepwalker]=2;
}
void Knight(){
printf("骑士,你明天要翻牌吗?(要输入1,不要输入0)");
scanf("%d",Knight_Show_Identity);
}
void Forbidden_Elder(){
printf("禁言长老,你明天要禁言谁?");
scanf("%d",&Prohibition);
}
void Miracle_Merchant(){
printf("奇迹商人,你要选择谁为幸运儿?");
scanf("%d",&Chosen_Son);
printf("那你要让他获得什么?(守卫的光辉结界是1、预言家的命运之眼是2、女巫的致命毒药是3)");
scanf("%d",&Job_CS);
}
void Demon_Hunter(int x){
printf("猎魔人,你要杀谁?");
int Kill;
scanf("%d",&Kill);
if(Job_List[Kill]==1||Job_List[Kill]==11){
printf("玩家%d死去了",&Kill);
Live_of_Player[Kill]=-1;
}else{
printf("你死去了");
Live_of_Player[x]=-1;
}
}
void Pure_White_Daughter(){
printf("纯白之女,你要检验谁?");
int Problem;
scanf("%d",&Problem);
printf("玩家%d,是",Problem);
if(Job_List[Problem]==1||Job_List[Problem]==11)
printf("坏人");
else
printf("好人");
}
void Prince_of_Order(){
printf("定序王子,你要暴身份吗?(要输入1,不要输入0)");
scanf("%d",&Prince_Show_Identity);
}
void Hidden_Wolf(){
if(Bad_Player!=1)
printf("隐狼,请继续掩藏自己的身份");
else{
printf("隐狼,你的亲戚朋友都死了,你要报仇,你成为了狼人一般的怪物");
printf("\n你要杀谁?");
int Kill;
scanf("%d",&Kill);
Live_of_Player[Kill]=-1;
}
}
void Wolf_Beauty(){
printf("狼美人,你要杀谁?");
int Kill;
scanf("%d",&Kill);
while(Job_List[Kill]==1){
printf("他是同类,请换一个\n");
scanf("%d",&Kill);
}
if(Kill==Sleepwalker)
Live_of_Player[Kill]=0;
if(Live_of_Player[Kill]!=2)
Live_of_Player[Kill]=-1;
printf("狼美人,你要魅惑谁?");
scanf("%d",&Charm);
}
void Gargoyl(){
printf("石像鬼,你要查验谁的身份?");
int Problem;
scanf("%d",&Problem);
printf("玩家%d他是 ",Problem);
switch(Problem){
case 1:
printf("狼人");
break;
case 2:
printf("平民");
break;
case 3:
printf("女巫");
break;
case 4:
printf("预言家");
break;
case 5:
printf("猎人");
break;
case 6:
printf("守卫");
break;
case 7:
printf("白痴");
break;
case 8:
printf("咒狐");
break;
case 9:
printf("守墓人");
break;
case 10:
printf("乌鸦");
break;
case 11:
printf("狼王");
break;
case 12:
printf("魔术师");
break;
case 13:
printf("摄梦人");
break;
case 14:
printf("骑士");
break;
case 15:
printf("禁言长老");
break;
case 16:
printf("奇迹商人");
break;
case 17:
printf("老流氓");
break;
case 18:
printf("猎魔人");
break;
case 19:
printf("纯白之女");
break;
case 20:
printf("定序王子");
break;
case 21:
printf("驯熊师");
break;
case 22:
printf("隐狼");
break;
case 23:
printf("狼美人");
break;
case 24:
printf("石像鬼");
break;
}
if(Player_Num==1){
printf("\n石像鬼,你的亲戚朋友都死了,你要报仇,你成为了狼人一般的怪物");
printf("\n你要杀谁?");
int Kill;
scanf("%d",&Kill);
Live_of_Player[Kill]=-1;
}
}
bool Is_Idiot(int x){//其他函数
return Job_List[x]==7;
}
void Chosen_Son_of_Guard(){
printf("天选之子,你要守护谁?");
int Help;
scanf("%d",&Help);
while(Help>Player_Num||Live_of_Player[Help]==1){
printf("不能输入此编号\n");
scanf("%d",&Help);
}
if(Job_List[Help]!=8)
Live_of_Player[Help]=2;
}
void Chosen_Son_of_Prophet(){
printf("天选之子,你要预言谁?");
int Problem;
scanf("%d",&Problem);
printf("玩家%d,是",Problem);
if(Job_List[Problem]==1||Job_List[Problem]==11||Job_List[Problem]==23)
printf("坏人");
else if(Job_List[Problem]!=8)
printf("好人");
else{
printf("咒狐");
Live_of_Player[Problem]=-1;
}
char c;
scanf("%c",&c);
}
void Chosen_Son_of_Witch(){
bool flag=0;
printf("天选之子,你有一瓶毒药,你要杀谁?");
int Kill;
scanf("%d",&Kill);
Live_of_Player[Kill]=-1;
if(Kill==Sleepwalker)
Live_of_Player[Kill]=0;
flag=1;
}
void Last_Words(){
printf("请发表遗言:");
char c='0';
while(c!='\n')
scanf("%c",&c);
}
void Knight_Deul(){
if(Knight_Show_Identity==1){
printf("玩家%d:勇敢的骑士,你要与谁决斗?",Knights_Number);
int Deul_People;
scanf("%d",&Deul_People);
if(Job_List[Deul_People]==1||Job_List[Deul_People]==11){
printf("死去的是 玩家%d,他是狼人",Deul_People);
Live_of_Player[Deul_People]=1;
}else{
printf("死去的是 玩家%d,他是勇敢的骑士",Knights_Number);
Live_of_Player[Knights_Number]=1;
}
}
getch();
system("cls");
}
void Hunter_Angry(int x){//死前释放技能
printf("玩家%d:是猎人\n",x);
printf("他决定在放逐前杀一个危险人物……");
int Kill;
scanf("%d",&Kill);
while(Kill>Player_Num||Live_of_Player[Kill]==1){
printf("不能输入此编号\n");
scanf("%d",&Kill);
}
Live_of_Player[Kill]=1;
}
void Wolf_King_Angey(int x){
printf("玩家%d:是狼王\n",x);
printf("他决定在放逐前杀一个玩家……");
int Kill;
scanf("%d",&Kill);
Live_of_Player[Kill]=1;
}//以下是狼人杀系统函数
void Day_is_Light(){//天亮了
Day++;
swap(Job_List[Magic1],Job_List[Magic2]);
printf("天亮了\n昨晚");
bool flag=1;
for(int i=1;i<=Player_Num;i++)
if(Live_of_Player[i]==-1&&Job_List[i]==13)
Live_of_Player[Sleepwalker]=-1;
else if(Live_of_Player[i]==-1&&Job_List[i]==23)
Live_of_Player[Charm]=-1;
for(int i=1;i<=Player_Num;i++){
Died_Yesterday[i]=0;
if(Live_of_Player[i]==-1&&i!=Roue_Number){
printf("玩家%d ",i);
Live_of_Player[i]=1;
Died_Yesterday[i]=1;
if(Job_List[i]==1||Job_List[i]==11||Job_List[i]==23||Job_List[i]==24)
Bad_Player--;
else
Good_Player--;
if(Job_List[i]==8)
Curse_Fox=1;
flag=0;
}else if(Live_of_Player[i]==2){
Live_of_Player[i]=0;
}
}
if(!flag){
printf("死了\n");
if(Day!=2)
for(int i=1;i<=Player_Num;i++)
if(Live_of_Player[i]==1){
printf("玩家%d",i);
Last_Words();
}
for(int i=1;i<=Player_Num;i++){
if(Live_of_Player[i]==1)
if(Job_List[i]==5)
Hunter_Angry(i);
else if(Job_List[i]==11)
Wolf_King_Angey(i);
}
}else
printf("是个平安夜");
}
void Ones_Vote(int x){//投票
printf("玩家%d :你觉得谁是狼人?",x);
int Suspected_Player;
scanf("%d",&Suspected_Player);
while(Live_of_Player[Suspected_Player]==1||Is_Idiot(Suspected_Player)){
if(Live_of_Player[Suspected_Player]==1)
printf("此人已死,请换一个人\n");
else{
printf("此人是白痴,请换一个人\n");
Find_Idiot=1;
}
scanf("%d",&Suspected_Player);
}
Vote_List[Suspected_Player]++;
if(x==Police_Man)
Vote_List[Suspected_Player]++;
printf("\n");
}
void Vote(){//投票总函数
printf("\n投票 开始!\n");
for(int i=1;i<=Player_Num;i++){
if(Live_of_Player[i]!=1){
if(Find_Idiot&&Job_List[i]==7)
continue;
Ones_Vote(i);
}
}
int maxx=-1;
for(int i=1;i<=Player_Num;i++){
if(Vote_List[i]>=Vote_List[maxx])
maxx=i;
}
if(maxx!=-1){
printf("玩家%d 的票最多,村长叫武士将他放逐……\n玩家%d Out",maxx,maxx);
Live_of_Player[maxx]=1;
Died_Yesterday[maxx]=1;
if(Job_List[maxx]==5)
Hunter_Angry(maxx);
else if(Job_List[maxx]==11)
Wolf_King_Angey(maxx);
if(Job_List[maxx]==1||Job_List[maxx]==11||Job_List[maxx]==23||Job_List[maxx]==24)
Bad_Player--;
else
Good_Player--;
}else
printf("所有人都弃票了,新一轮生死争斗又开始了……");
for(int i=1;i<=Player_Num;i++)
Vote_List[i]=0;
char ch1;
scanf("%c",&ch1);
scanf("%c",&ch1);
system("cls");
}
void Idea(){//发表意见
printf("众人发表意见……\n");
for(int i=1;i<=Player_Num;i++){
if(Live_of_Player[i]==0&&i!=Prohibition){
printf("玩家%d发表意见:",i);
char ch='0';
while(ch!='\n')
scanf("%c",&ch);
printf("\n");
}
}
if(Live_of_Player[Roue_Number]==-1){
Live_of_Player[Roue_Number]=1;
printf("老流氓尽了自己最后一口气,发表了意见……");
}
}
void Prince_of_Idea(int x){
printf("定序王子(玩家%d)又发表了意见:",x);
char ch='0';
while(ch!='\n')
scanf("%c",&ch);
printf("\n");
}
void Reverse_space_time(){
int Prince=0;
for(int i=1;i<=Player_Num;i++)
if(Job_List[i]==20)
Prince=i;
printf("玩家%d拿出了那神秘的镇国之宝……",Prince);
printf("时间倒流,时间又回到了投票之前……\n");
printf("等众人反应过来时,发表意见和投票再次开始……\n");
Idea();
Prince_of_Idea(Prince);
Vote();
}
void Police_Man_Choose(){
printf("现在,开始竞选警长\n");
for(int i=1;i<=Player_Num;i++){
if(Live_of_Player[i]==0){
printf("玩家%d:你认为谁最适合当警长?",i);
int Choose;
scanf("%d",&Choose);
while(Live_of_Player[Choose]==1){
printf("此人已死,请换个人\n");
scanf("%d",&Choose);
}
Choose_Police[Choose]++;
printf("\n");
}
}
Police_Man=-1;
for(int i=1;i<=Player_Num;i++)
if(Choose_Police[i]>Choose_Police[Police_Man])
Police_Man=i;
if(Police_Man!=-1)
printf("玩家%d 很荣幸成为警长\n",Police_Man);
else
printf("很遗憾,没有人成为警长\n");
for(int i=1;i<=Player_Num;i++)
Choose_Police[i]=0;
char c;
scanf("%c",&c);
system("cls");
}
void Anti_Peeping_Interface(int x){
printf("玩家%d请闭眼",x);
if(x!=Player_Num)
printf(",玩家%d请睁眼",x+1);
return ;
}
void Day_is_Dark(){//天黑了
printf("天黑了……\n");
printf("狼人出来觅食了……\n");
printf("神职人员的使命……\n");
char ch;
scanf("%c",&ch);
system("cls");
printf("天黑,请闭眼\n");
for(int i=1;i<=Player_Num;i++){
if(Live_of_Player[i]==1)//鬼不能用技能
continue;
printf("玩家%d:",i);
if(i==Chosen_Son&&Job_List[i]!=1&&Job_List[i]!=11){
printf("你是奇迹商人选中的幸运儿(天选之子),你获得了:");
if(Job_CS==1){
printf("守卫的光辉结界,所以……\n");
Chosen_Son_of_Guard();
}else if(Job_CS==2){
printf("预言家的命运之眼,所以……\n");
Chosen_Son_of_Prophet();
}else{
printf("女巫的致命毒药,所以……\n");
Chosen_Son_of_Witch();
}
}
if(Job_List[i]==2||//平民不能睁眼
Job_List[i]==7||//白痴不能睁眼
Job_List[i]==8||//咒狐不能睁眼
Job_List[i]==17||//老流氓不能睁眼
Job_List[i]==21)//训熊师不能睁眼
printf("请开动脑筋,让自己存活,使己方取得胜利!");
else if(Job_List[i]==1)
Wolf_Man();
else if(Job_List[i]==3)
Witch();
else if(Job_List[i]==4)
Prophet();
else if(Job_List[i]==6)
Guard();
else if(Job_List[i]==9)
Tomb_Keeper();
else if(Job_List[i]==10)
Crow();
else if(Job_List[i]==11)
Wolf_King();
else if(Job_List[i]==12)
Magician();
else if(Job_List[i]==13)
Dream_Photographer();
else if(Job_List[i]==14){
Knights_Number=i;
Knight();
}else if(Job_List[i]==15)
Forbidden_Elder();
else if(Job_List[i]==16)
Miracle_Merchant();
else if(Job_List[i]==18)
Demon_Hunter(i);
else if(Job_List[i]==19)
Pure_White_Daughter();
else if(Job_List[i]==20)
Prince_of_Order();
else if(Job_List[i]==22)
Hidden_Wolf();
else if(Job_List[i]==23)
Wolf_Beauty();
//新的人物正在更新……
char c;
scanf("%c",&c);
system("cls");
Anti_Peeping_Interface(i);
scanf("%c",&c);
system("cls");
}
}
void Game_not_Start(){//初始化
Witch_of_Panacea=1;
Witch_of_Poison=1;
}
void Bear_Tamer(){
int Bear_Trainer=0;
for(int i=1;i<=Player_Num;i++)
if(Job_List[i]==21)
Bear_Trainer=i;
if(Bear_Trainer==0)
return ;
for(int i=Bear_Trainer-1;i>=1;i--)
if(Live_of_Player[i]==0){
if(Job_List[i]==1||Job_List[i]==11){
printf("熊咆哮了!");
return ;
}
break;
}
for(int i=Bear_Trainer+1;i<=Player_Num;i++)
if(Live_of_Player[i]==0){
if(Job_List[i]==1||Job_List[i]==11){
printf("熊咆哮了!");
return ;
}
break;
}
}
void Noon(){
Bear_Tamer();
if(Player_Num<=12)
Police_Man_Choose();
if(Knight_Show_Identity==1)
Knight_Deul();
Idea();
Vote();
if(Prince_Show_Identity==1)
Reverse_space_time();
}
void Game_Run(){//游戏运行
Game_not_Start();
while(Good_Player>0&&Bad_Player>0){
Day_is_Dark();
Day_is_Light();
if(Good_Player&&Bad_Player>0){
Noon();
}
}
}
void Game_Over(){//游戏结束
if(Curse_Fox==0){//特殊情况
printf("咒狐赢了……\n");
printf("两大种族都没有成为最后的赢家……\n");
printf("那只咒狐在山崖上狂笑不止……\n");
}else if(Bad_Player==0){
printf("平民赢了……\n");
printf("村庄恢复了宁静……\n");
printf("狼人的尸体在村庄中被火化……\n");
printf("丛林中再也没有狼嚎……");
}else{
printf("狼人赢了……\n");
printf("村庄……有着死一般的宁静……\n");
printf("村民的尸体,被狼人吃得只剩白骨……\n");
printf("狼人,又开始对下一个村庄的屠杀……");
}
char ch;
scanf("%c",&ch);
system("cls");
printf("GameOver");
}
void Init_Job(){
printf("主持人,请问:\n");
printf("一共有多少人?\n");
scanf("%d",&Player_Num);
printf("好的,他们分别是什么身份?\n");
printf("以下是人物列表(输入身份时,请输入数字)\n");
printf("1 狼人 2 平民 3 女巫 4 预言家 5 猎人 \n");
printf("6 守卫 7 白痴 8 咒狐 9 守墓人 10 乌鸦 \n");
printf("11 狼王 12 魔术师 13 摄梦人 14 骑士 15 禁言长老\n");
printf("16 奇迹商人 17 老流氓 18 猎魔人 19 纯白之女 20 定序王子\n");
printf("21 驯熊师 22 隐狼 23 狼美人 24 石像鬼 25 蚀时狼妃\n");
Curse_Fox=1;
for(int i=1;i<=Player_Num;i++){
scanf("%d",&Job_List[i]);
if(Job_List[i]!=1&&Job_List[i]!=8&&Job_List[i]!=11&&Job_List[i]!=22&&Job_List[i]==23&&Job_List[i]==25)
Good_Player++;
else
Bad_Player++;
if(Job_List[i]==8)
Curse_Fox=0;//初始化
if(Job_List[i]==9)
Roue_Number=i;//初始化
}
printf("好……\n");
printf("游戏开始……\n");
char c;
scanf("%c",&c);
system("cls");
}
int main(){
Game_Start();
Init_Job();
Game_Player_Print();
Game_Run();
Game_Over();
return 0;
}