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;//返回值
    }
相关推荐
fashia6 分钟前
Java转Go日记(五十四):gin路由
开发语言·后端·golang·go·html·gin
_WndProc7 分钟前
【C++】控制台小游戏
开发语言·c++·vscode
Vic101018 分钟前
GaussDB(PostgreSQL)查询执行计划参数解析技术文档
算法·哈希算法·gaussdb
_安晓9 分钟前
数据结构 -- B树和B+树
数据结构·b树
小王同学的C++17 分钟前
C++中的菱形继承问题
开发语言·c++
麻辣香蝈蝈27 分钟前
【Vue3】一文学会动态路由和编程式路由的使用
开发语言·前端·javascript·vue.js
flex888834 分钟前
一个由微软开源的 Python 工具,用于将多种文件格式转换为 Markdown 格式
开发语言·python·microsoft
煤灰2421 小时前
简单用c++的类实现的string
java·开发语言·c++
小喵要摸鱼1 小时前
【软考向】Chapter 3 数据结构
数据结构·算法·排序算法
vegetablesssss1 小时前
QGrphicsScen画布网格和QGrphicsItem对齐到网格
c++·qt