用c语言实现《狼人杀》游戏发牌系统

目录
  • 1.前言
  • 2.程序效果
  • 3.完整代码
  • 总结

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语言狼人杀内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言实现简单的推箱子游戏

    本文实例为大家分享了C语言实现简单的推箱子游戏的具体代码,供大家参考,具体内容如下 项目实现的具体方案: 先安装VS2019,后安装画图工具Easyx,安装以后就可以将推箱子中的(人物,墙壁,箱子目的地,箱子)的图片加载到程序中显示出来.游戏的实现是通过程序读取键盘中输入的字母,后控制加载到程序中的人物图片的移动实现小人的移动,通过人物图片和地板图片交换位置实现人物的行走,如果人物前面是箱子图片,箱子图片前面是地板图片,则人物图片和箱子图片一起移动,直到箱子图片前面是箱子目的地图片则箱子图片将箱

  • C语言实现扫雷游戏详解(附源码)

    目录 1.游戏的功能 2.游戏实现的基本思路 2.1实现菜单给玩家选择 2.2初始化棋盘 2.3数组大小的问题 2.4对棋盘赋值 2.5打印棋盘 2.6布置雷 2.7排查雷 3.代码基本实现部分 3.1主函数部分 3.2 初始化棋盘 3.3对两个棋盘进行赋值 3.4打印棋盘 3.5布置雷 3.6排查雷  3.7函数声明 4.扫雷游戏的源代码 总结 1.游戏的功能 游戏的主要功能有 1:棋盘内有若干个雷 2:玩家输入要排查雷的坐标 3:在玩家输入的坐标处显示周围八个坐标有几个雷 3:若玩家将所有的

  • 用c语言实现《狼人杀》游戏发牌系统

    目录 1.前言 2.程序效果 3.完整代码 总结 1.前言 新年将至,亲戚朋友在家中免不了玩一下桌游,狼人杀确实是一个不错选择.那么针对正常的狼人杀玩法(8人局和12人局),博主利用一上午时间做了一个<狼人杀自动发牌系统>(可查看游戏教程和人物属性).接下来就直接看程序效果和完整代码吧! 2.程序效果 3.完整代码 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<window

  • C语言实现洗牌与发牌游戏

    本文实例为大家分享了C语言实现洗牌与发牌游戏的具体代码,供大家参考,具体内容如下 普通版 #include<stdio.h> #include<stdlib.h> #include<time.h> #define SUITS 4 #define FACES 13 #define CARDS 52 void shuffle(int wDeck[][FACES]); void send(int wDeck[][FACES], const char* wSuit[], con

  • C语言实战之纸牌游戏

    目录 1. 基本要求 2. 运行界面 3. 代码解释  1. 基本要求 一副没有花牌(J.Q.K.A.大小王)的扑克牌,两个人进行纸牌游戏,其中一个人为用户,另一个人为计算机; 每轮每人各发5张牌,各自以这5张牌建立二叉排序树: 由用户先出,轮流出牌,每次只能出一张并且要比别人出的大,如:用户出3,计算机则要出比3大的牌,没有则选择不出: 最先出完的人获胜. 2. 运行界面 1. 首页面 2. 游戏说明 3. 开始游戏 4. 开始出牌 5. 游戏结束 3. 代码解释  #include<stdi

  • C语言实现五子棋小游戏

    首先我们先来看一个稍微简单些的实现方式: #include <stdio.h> #include <stdlib.h> #define N 15 int chessboard[N + 1][N + 1] = { 0 }; int whoseTurn = 0; void initGame(void); void printChessboard(void); void playChess(void); int judge(int, int); int main(void) { init

  • 基于C语言实现的扫雷游戏代码

    本文详细讲述了基于C语言实现的扫雷游戏代码,代码中备有比较详细的注释,便于读者阅读和理解.希望对学习游戏开发的朋友能有一点借鉴价值. 完整的实例代码如下: /* 模拟扫雷游戏 */ #include <graphics.h> #include <math.h> #include <stdio.h> #include <dos.h> #include <stdlib.h> #include <conio.h> #include <

  • C语言实现2048小游戏

    本文实例为大家分享了C语言实现2048小游戏的具体代码,供大家参考,具体内容如下 具有以下特点: 1.linux下完成 2.非堵塞键盘读取 3.随机生成2和4 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define TTY_PATH "/dev/tty" #define STTY_ON "stty raw -echo -F" #define STTY_O

  • C语言实现俄罗斯方块小游戏

    C语言实现俄罗斯方块小游戏的制作代码,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define TTY_PATH "/dev/tty" #define STTY_ON "stty raw -echo -F" #define STTY_OFF "stty -raw echo -F" int map[21][14]; char

  • C语言实现三子棋游戏

    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<time.h> void chess_board(char arr[3][3]) //打印棋盘 { int i = 0; int j = 0; for (i = 0; i < 3; i++) { printf( " %c | %c | %c \n", arr [i][0], a

  • C语言实现24点游戏源代码

    本文实例为大家分享了C语言实现24点游戏的具体代码,供大家参考,具体内容如下 参考文章:C语言实现经典24点算法 将算法实现改成C语言,并可在linux服务器上运行.同时修改为可显示所有结果. 注:如果传参重复,如4,4,7,7这样,会回显重复结果,暂无法清除. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> const double PRECISION

  • C语言实现简单扫雷游戏

    本文实例为大家分享了C语言实现简单扫雷游戏的具体代码,供大家参考,具体内容如下 步骤 1.首先打印游戏选择菜单 2.地图及初始化 1).展示给玩家的地图(show_map) 2).地雷的图(mine_map可知地雷的位置) 3.打印地图 4.用户输入坐标,并检查坐标的合理性 5.判断当前位置是否有地雷,没有则出现数字(表示周围格子中有几个地雷) 6.打印新的地图 7.重复3~6步骤,直到踩雷游戏结束,或胜利. 8重新继续游戏或退出! 代码 主函数及游戏选择菜单 #include<stdio.h>

随机推荐