1.前言
新年将至,亲戚朋友在家中免不了玩一下桌游,狼人杀确实是一个不错选择。那么针对正常的狼人杀玩法(8人局和12人局),博主利用一上午时间做了一个《狼人杀自动发牌系统》(可查看游戏教程和人物属性)。接下来就直接看程序效果和完整代码吧!
2.程序效果
3.完整代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
void charability();
void gamerule8();
void gamerule12();
void sortplayer(int x);
void giveplayer8();
void giveplayer12();
int main()
{
while(1)
{
int number;
printf("-----------------------------------输入“1”选择发牌模式(8人局 or 12人局)--------------------------------------------\n");
printf("------------------------------------------输入“2”查看游戏规则--------------------------------------------------------\n");
printf("------------------------------------------输入“3”查看角色技能-------------------------------------------------------\n");
printf("------------------------------------------输入“4”退出游戏------------------------------------------------------------\n");
printf("请输入:\n");
scanf("%d",&number);
if(number==1)
{
int number2;
system("cls");
printf("------------------------------------------输入“1”为8人局模式发牌-----------------------------------------------------\n");
printf("------------------------------------------输入“2”为12人局模式发牌----------------------------------------------------\n");
printf("请输入:\n");
scanf("%d",&number2);
system("cls");
if(number2==1)
{
giveplayer8();
}else if(number2==2)
{
giveplayer12();
}else{
goto start;
}
}else if(number==2)
{
system("cls");
int number4;
printf("----------------------------------------输入“1”查看8人局规则-----------------------------------------------------\n");
printf("----------------------------------------输入“2”查看12人局规则-----------------------------------------------------\n");
printf("请输入:\n");
scanf("%d",&number4);
system("cls");
if(number4==1)
{
gamerule8();
}else if(number4==2){
gamerule12();
}else{
goto start;
}
}else if(number==3){
charability();
}else if(number==4)
{
break;
}else{
start:
printf("----------------------------------------请重新输入正确的指令--------------------------------------------------\n\n");
}
}
system("cls");
printf("-------------------------------------------游戏结束--------------------------------------------------------------------\n");
printf("-------------------------------------------游戏结束--------------------------------------------------------------------\n");
printf("-------------------------------------------游戏结束--------------------------------------------------------------------\n");
printf("--------------------------------------MADE BY CSDN: Wccyy883-----------------------------------------------------------\n");
system("pause");
return 0;
}
void charability()
{
system("cls");
printf("1.普通村民:\n本身没有任何能力,一觉睡到天亮却要考虑很多事情。平民会接收到真假混杂的信息,需要从中分辨和判断出正确的信息。\n");
printf("2.狼人:\n每天晚上会残忍地杀害一个村民,到了白天,狼人要假扮村民隐藏自己的身份,故意误导或陷害其他村民。\n") ;
printf("3.预言家:\n每晚预言家可以窥视一个玩家的真实身份,是村庄里的灵魂人物,带领好人走向胜利。\n");
printf("4.女巫:\n女巫拥有两瓶药,解药可以救活一名当晚被狼人杀害的玩家,毒药可以毒杀一名玩家,女巫在每天晚上最多使用一瓶药,女巫不可自救.\n");
printf("5.猎人:\n当猎人被狼人杀害或被村民处决时,他可以射杀任意一个玩家。但当猎人由于意外死亡(如女巫的毒药或者被殉情而死)他不可在死前射出子弹\n");
printf("6.警长:\n附加身份牌,游戏开始后第一天从所有玩家中通过投票选举出一名玩家授予警长。警长在白天最后发言并且投票时有1.5 票。\n");
printf("7.白痴:\n好人阵营,隐神牌,白痴平时与普通村民无异,但当他被村民票死的时候,他可以翻牌亮出身份,若如此做就能免死。在所有玩家发言结束后,多一次发言机会,但是翻牌以后的白痴不能投票。\n");
}
void gamerule8()
{
printf("8人狼人杀的配置一般为:3个狼、2个平民、1个预言家、1个猎人和1个女巫,这也是能凑成一局狼人杀最基本的搭配\n");
printf("因为正常情况下一局狼人杀无论人数多少都需要3个狼人和3个神职人员,否则游戏很难进行下去,平民人数则根据你们现实的人数进行调整\n");
}
void gamerule12()
{
printf("(标准12人局包括:4个平民,4个狼人,1个预言家,1个女巫,1个猎人,1个白痴) 法官:天黑请闭眼,狼人请睁眼。 假如你手牌是狼人(即12号玩家):\n");
printf("法官:天黑请闭眼,狼人请睁眼。 假如你手牌是狼人(即12号玩家): 你需要睁开眼睛,此时会看见另外3个睁眼玩家,没错,他们就是你的狼同伴了,你的任务就是和他们一起,携手把好人杀掉。\n");
printf("你无需比划任何手势,也不需要努力去参透伙伴中所谓的高玩在比划的任何手势,静静的看着他们即可,仅仅只需要记住伙伴们最终向法官出示的选择杀掉的那个号码。 然后闭眼,等待。 法官:狼人请闭眼,女巫请睁眼。\n");
printf("假如你手牌是女巫(即11号玩家): 整局游戏女巫手上有 一瓶救药 和 一瓶毒药,分别用来 救一个人 和 毒死一个人。 每一个晚上最多使用一瓶。\n");
}
void sortplayer(int x)
{
if(x==1)printf("普通平民\n");
else if(x==2)printf("普通平民\n");
else if(x==3)printf("狼\n");
else if(x==4)printf("狼\n");
else if(x==5)printf("狼\n");
else if(x==6)printf("女巫\n");
else if(x==7)printf("预言家\n");
else if(x==8)printf("猎人\n");
else if(x==9)printf("普通平民\n");
else if(x==10)printf("普通平民\n");
else if(x==11)printf("狼\n");
else if(x==12)printf("白痴\n");
}
void giveplayer8()
{
srand(time(NULL));
int a[8]={0};
int i;
int all;
for(i=0;i<8;i++)
{
while(1){
all=rand()%8+1;
int j,t;
t=0;
for(j=0;j<8;j++)
{
if(a[j]==all)
{
t=1;
}
}
if(t==0)
{
break;
}
}
a[i]=all;
}
printf("\n");
for(i=0;i<8;i++)
{
printf("%d号玩家身份:\n",i+1);
sortplayer(a[i]);
}
}
void giveplayer12()
{
srand(time(NULL));
int a[12]={0};
int i;
int all;
for(i=0;i<12;i++)
{
while(1){
all=rand()%12+1;
int j,t;
t=0;
for(j=0;j<12;j++)
{
if(a[j]==all)
{
t=1;
}
}
if(t==0)
{
break;
}
}
a[i]=all;
}
printf("\n");
for(i=0;i<12;i++)
{
printf("%d号玩家身份:\n",i+1);
sortplayer(a[i]);
}
}
总结
到此这篇关于用c语言实现《狼人杀》游戏发牌系统的文章就介绍到这了,更多相关c语言狼人杀内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!