c++_游戏_狼人杀

思路主要包括以下几个部分:

  1. 角色分配:代码中通过随机数的方式给狼人、平民、预言家和法师等角色进行分配,保证每个角色的数量和身份的随机性。

  2. 游戏进行:根据狼人、平民、预言家和法师等角色的身份,游戏进行了夜晚和白天的交替,每个角色根据自己的身份进行相应的行动,比如狼人选择杀人、预言家选择预言等。

  3. 游戏结束条件:游戏根据角色的行动和玩家的投票,判断游戏是否结束,比如狼人全部被杀死或者平民被全部杀死等。

    cpp 复制代码
    #include <bits/stdc++.h>
    #include <windows.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <stdio.h>
    #define random(a,b) (rand()%(b-a+1)+a)
    using namespace std;//命名空间
    int a[6]={0,0,0,0,0,0};
    struct node{
    	string sf;
    }sfs[4];
    void wolf(){
    	
    	int x;
    	x= random(1,6);
    	a[x-1]=3;
    	return ;
    }
    void yu(){
    	
    	int x,y=0;
    	while(y==0){
    		x= random(1,6);
    		if(a[x-1]==0){
    			y=1;
    			a[x-1]=1;
    			return ;
    		}
    	}
    }
    void fa(){
    	
    	int x,y=0;
    	while(y==0){
    		x= random(1,6);
    		if(a[x-1]==0){
    			y=1;
    			a[x-1]=2;
    			return ;
    		}
    	}
    }
    void printsetence(string &text, int interval) {
    	int n = text.length();
    	for (int i=0; i<n; i++) {
    		cout<<text[i];
    		Sleep(interval);
    	}
    	return;
    }
    int main(){//主函数
    	sfs[0].sf="平民";
    	sfs[1].sf="预言家";
    	sfs[2].sf="法师";
    	sfs[3].sf="狼";
    	cout<<" 狼 :1 平:3 预:1 法:1" <<endl;
    	srand((unsigned)time(NULL));
    	wolf();
    	srand((unsigned)time(NULL));
    	fa();
    	srand((unsigned)time(NULL));
    	yu();
    	
    	system("color 87") ;
    	system("pause") ;
    	system("cls");
    	string text = "你是1号,你的身份是:";
    	printsetence(text,25);
    	cout<<sfs[a[0]].sf<<endl;
    	system("color 87") ;
    	system("pause") ;
    	system("cls");
    	int tian=0; 
    	while(1){
    		tian++;
    		cout<<"第"<<tian<<"夜";
    		system("color 87") ;
    		system("pause") ;
    		system("cls");
    		int flag=0;
    		if(a[0]==3){
    			flag=1;
    			int shu;
    			cout<<"你要刀几号?"<<endl;
    			cin>>shu;
    			a[shu-1]+=4;
    			system("color 87") ;
    			system("pause") ;
    			system("cls");
    		}else if(a[0]==2){
    			cout<<"今晚你要毒还是救";
    			string shu1;
    			cin>>shu1;
    			system("color 87") ;
    			system("pause") ;
    			system("cls");
    			if(shu1=="毒"){
    				cout<<"你要毒几号" ;
    				int shu;
    				cin>>shu;
    				a[shu-1]+=4;
    			}else{
    				cout<<"你要救几号" ;
    				int shu; 
    				cin>>shu;
    				if(a[shu-1]>=4){
    					a[shu-1]-=4;
    				}
    			}
    			system("color 87") ;
    			system("pause") ;
    			system("cls");
    		}else if(a[0]==1){
    			
    			cout<<"今晚你要预言几号";
    			int shu;
    			cin>>shu;
    			
    			system("color 87") ;
    			system("pause") ;
    			system("cls");
    			cout<<"他的身份是";
    			cout<<sfs[a[shu-1]].sf<<endl;
    			system("color 87") ;
    			system("pause") ;
    			system("cls");
    		}else{
    			int flagg=0;
    			while(flagg==0) {
    			
    				srand((unsigned)time(NULL));
    				int b=random(1,6);
    				if(a[b-1]<4){
    					flagg=1;
    					a[b-1]+=4;
    				}
    			}	
    		} 
    		if(flag==0){
    			srand((unsigned)time(NULL));
    			a[random(1,6)-1]+=4;
    		}
    		int sum=0;
    		cout<<"天亮了,过了今晚还剩";
    		for(int i=0;i<6;i++){
    			if(a[i]<4){
    				cout<<i+1<<"号"<<" ";
    				sum++;
    			}else if(i==0){
    				system("pause") ;
    				system("cls");
    				cout<<"你被杀了"<<endl;
    				system("pause") ;
    				system("cls");
    				return 0;
    			}else if(a[i]==7){
    				cout<<"狼死了";
    				system("color 87") ;
    			system("pause") ;
    			system("cls");
    			return 0;
    			}
    		} 
    		system("color 87") ;
    		system("pause") ;
    		system("cls");
    		int mx=0,mxx,n,piao[6]={0,0,0,0,0,0};
    		cout<<"请投票"<<endl;
    		cin>> n;
    		piao[n-1]++;
    		sum-=1;
    		while(sum--){
    			srand((unsigned)time(NULL));
    			piao[random(1,6)-1]++;
    		}
    		for(int i=0;i<6;i++){
    			cout<<i+1<<"号:"<<piao[i]<<"票 "; 
    			if(mx<piao[i]){
    				
    				mx=piao[i];
    				mxx=i+1;
    			}
    		}
    		cout<<endl;
    		cout<<mxx<<"号出局"<<endl;
    		if(mxx-1==0){
    				system("pause") ;
    				system("cls");
    				cout<<"你被票了"<<endl;
    				system("pause") ;
    				system("cls");
    				return 0;
    			}
    		a[mxx-1]+=4;
    		if(a[mxx-1]==7){
    			cout<<"他是狼"; 
    			system("color 87") ;
    			system("pause") ;
    			system("cls");
        		return 0;//返回值
    		}
    	}
        return 0;//返回值
    }
相关推荐
环能jvav大师4 分钟前
基于R语言的统计分析基础:使用dplyr包进行数据操作
大数据·开发语言·数据分析·r语言
float_com15 分钟前
【STL】stack,deque,queue 基础,应用与操作
c++·stl·极速入门
懒洋洋大魔王20 分钟前
7.Java高级编程 多线程
java·开发语言·jvm
=(^.^)=哈哈哈21 分钟前
Golang如何优雅的退出程序
开发语言·golang·xcode
学习使我变快乐22 分钟前
C++:用类实现链表,队列,栈
开发语言·c++·链表
茶馆大橘25 分钟前
【黑马点评】已解决java.lang.NullPointerException异常
java·开发语言
lmy_t28 分钟前
C++之第十二课
开发语言·c++
马剑威(威哥爱编程)32 分钟前
除了递归算法,要如何优化实现文件搜索功能
java·开发语言·算法·递归算法·威哥爱编程·memoization
我码玄黄43 分钟前
THREE.js:网页上的3D世界构建者
开发语言·javascript·3d
算法萌新——11 小时前
洛谷P2240——贪心算法
算法·贪心算法