c++_游戏_狼人杀

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

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

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

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

    #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;//返回值
    }

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值